プログラマメモ2 - programmer no memo2

まさかの2083文字問題に出会いました。 2014/02/19

まさかの2083文字問題に出会いました。


開発で使用している古いstruts でというタグを使い、つぎの画面にフォームの内容に転送しました。

実際、タグが展開されてレンダリングされた状態をみたところ、getのパラメータとしてフォームの内容が連結されていました。それで、キーが日本語を使っていたため、urlencode?されていたため、文字数をさらに消費して、2083文字オーバでフレームから次のページが読み取れないという流れになってしまった。

あと開発でターゲットにしているブラウザは、IE8なのでした。

ieに右クリックメニューとclipboardData 2010/02/27

IE(Internet Explorer)の右クリックメニュー(コンテクストメニュー)にメニューを追加します。
あわせて呼ばれるプログラム(Javascript)を設定します。

参考



レジストリ経由でメニューを追加します。

以下
REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\a]
@="file:///Z:/for_win/research/ieに右クリックメニューとclipboardData/a.html"
"Flags"=dword:00000000a


REGEDIT4
は何やら必須のようですね。

レジストリファイルの解説 - 進め!中級プログラマー

次に実行するjavascriptを書いてあるhtmlファイルの用意
<script language="JavaScript">

// 開かれたコンテクストメニューがあるウィンドウ
var oWindow = window.external.menuArguments;
var oDocument = oWindow.document;
// 選択された部分
var oSelect = oDocument.selection;

// TextRangeCreate
var oSelectRange = oSelect.createRange();
var sNewText = oSelectRange.text;
// 取得した文字列をクリップボードに入れる
clipboardData.setData("Text", oSelectRange.text);

oSelectRange.text = "上書き";

</script>


これでIEを再起動するとメニューの追加されてりいます。呼び出されるjavascriptはその都度呼び出されるので、修整しながら実行がらくですね。

あと、Javascriptでクリップボードに値をコピーします。
IEだとクリップボードのやりとりがClipboardDataを通してできるようです。

[css]もうcssハックをやめたい。 2008/02/23

ひとつのcssでいろいろなブラウザに対応させるテクニックをCSSハックといったりするようですね。

もう疲れました。ひとつのcssでieに対応させる道を断念しようと思いました。
調べていくと、ieのためのcssの読み込みをおこなう方法がありました。

この方法を使うと、ie専用のcssを読み込ませることができます。

<!--[if IE ]>
<link href='http://deiji.jp/css/programmermemo3/ie.css' media='screen' rel='stylesheet' type='text/css'/>
<![endif]-->


もうこれでいくしかありません。
Orz...

参考