Sleipnir2スレ
- 4 :l ★:2006/11/11(土) 04:11:52 ID:???
- UserActionから自由にデザイン可能な入力ダイアログを表示する
スクラップブックスクリプトに追加するときに、コメントやタグなどを入力できるようにしたいので、組み込みスクリプトからフォームを表示して入力内容を受け取る方法について考える。
ページ中に勝手にフォームを書き込めば良さそうなものだが、なんか不格好だし、OKボタンを押されたことを知るのが難しそうなんで避けたい。
window.showModalDialog()というやつでダイアログを表示出来ることを知る。
ダイアログ内では、Sleipnirでスクリプトを無効にしていても、IE側で有効ならばスクリプトが実行できる。
window.returnValueに代入されていた値がshowModalDialog()の返り値になる。
これを利用すれば、組み込みスクリプトから入力ダイアログっぽいものが表示できそうである。
だが、とりあえず「about:<input...」のようなURLで「about:」以降の内容をHTMLで表示させるという方法を試してみたところ、ダイアログは表示されるものの、なぜかreturnValueによる返り値の受け取りが出来なかった。
そこで、HTMLをローカルファイルに保存してみたら、インターネット上のページで実行しようとしたときに「アクセスが拒否されました」というエラーになる。
あきらめてwindow.open()でフォームページを表示する方法などを試してみたが、アクセス制限などの都合でことごとく失敗した。
色々と試してみた結果、window.openで空のウィンドウを開き、そのwindowオブジェクトのshowModalDialog()を使うことで、返り値の受け取りが可能なことを突き止めた。
ダミーのページが目障りなのはあきらめよう。
コードは以下のような感じ。
w=_window.open("","","",false);
val=w.showModalDialog('about:<body color="buttontext" bgcolor="buttonface"><input type="text" id="comment" value="aaa"><input type="button" onClick="window.returnValue=comment.value;window.close();" value="OK"></body>',"",
'status:no;help:no;dialogWidth:300px;dialogHeight:40px');
w.close();
IE7で動作するかが心配だ。
57KB
0ch BBS 2005-10-08