観測気球 » 右クリック(MenuExt)
右クリック(MenuExt) -- Hot Topics
メモ: IE8の「右クリック」から起動する JavaScript でも prompt を使えるようにする方法
Internet Exporler には、「右クリック」で表示されるメニュー(context menu)経由でいろんなコマンドやツールを起動する機能、いわゆるコンテキストメニュー拡張(MenuExt)があります。この MenuExt は、JavaScipt (以外に VBScipt 等も使える) でコマンドやツールを記述して、レジストリに登録することで、使えるようになります。
IE6 までは、単にレジストリに登録するだけで使えた(今までIEが入ってなかった環境に IE6 を入れた場合は、セキュリティ関連の設定が必要になります。すでに IE5.x が入っている状態からのアップデートの場合は不要)のですが、IE7 以降は「既定」の設定のままでは動かなくなってしまいました。
IE7 のときは、「インターネットオプション」の設定をいじれば動くようになりました。IE8 では、「既定」のままでも問題なく動くものがある(セキュリティ的にそれでいいのか疑問ですが)一方で、なぜか途中まで動いて終了してしまうものがあるという、よくわからない状況になっています。
どういう JavaScript が動かなくなってしまったかというと、prompt を使っているものが動かなくなってしまったことを確認しています。alert や confirm は問題なく実行されるのに、prompt を実行しようとしたところで強制終了。わけがわかりません。
IE8 の新機能「セーフティ」はとりあえず、無関係。次に、「インターネットオプション」の「セキュリティ」。設定をいろいろいじって試してみましたが、全く効果なし。
結局、IE7 のときにもいじった「詳細設定」の「マイコンピューターでのファイルでのアクティブコンテンツの実行を許可する」を「許可する」設定に変更することで解決。prompt を使っている JavaScript も動くようになりました。
「マイコンピューターでのファイルでのアクティブコンテンツの実行を許可する」をチェック
それにしても何で prompt だけ、こんなことになってしまってるんでしょうね。不思議です。IE7 のときは、prompt だけじゃなくて、MenuExt な JavaScipt 全滅だったのに。セキュリティ的には IE7 の方が正しい「既定動作」だと思います。不評だったとかで変えちゃったのかなぁ? それにしても中途半端な変更ですね。
投稿者: tsupo 2009.11.29 午前 06:03
| 固定リンク
| コメント (0)
| トラックバック (0)
|
|
|
|
右クリックで「数値参照デコード」
ないと困る場面が出てきたので、作ってみました。やっつけで作ったので、ソースはかなり適当ですが、いちおう動作確認済みです。IE7 と IE6 で、そのまま動くと思います。他のブラウザで動かしたい人は、適当に修正して使ってください。
『右クリックで「数値参照デコード」』を使おうとしているところ
以下、ソースコードです。(Version 1.0 のバグを発見。修正した版 Version 1.1 に差し替えました)
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript" language="JavaScript"> // 「右クリックで 数値参照デコード」 // written by H.Tsujimura (tsupo at na.rim.or.jp) // // Version 1.1 29 Feb 2008 最後の2文字欠けることがあるバグを修正 // Version 1.0 28 Feb 2008 最初の版 function setSelection(v) { if ( str ) obj.document.selection.createRange().text = v; } function hexNum(c) { var n = 0; if ( (c >= '0') && (c <= '9') ) return ( Number(c) ); if ( (c >= 'A') && (c <= 'F') ) n = Number(c - 'A') + 10; else if ( (c >= 'a') && (c <= 'f') ) n = Number(c - 'a') + 10; return ( n ); } function decodeNumber(s) { var t = ""; var len = s.length; var n = 0; var mode = false; var inner = false; if ( len <= 3 ) return ( s ); for ( i = 0; i < len - 2; i++ ) { var c1 = s.charAt(i); if ( !inner ) { var c2 = s.charAt(i + 1); var c3 = s.charAt(i + 2); if ( (c1 == '&') && (c2 == '#') ) { if ( c3 == 'x' ) { mode = true; i++; } i++; inner = true; } if ( !inner ) t += c1; continue; } if ( c1 == ';' ) { inner = false; mode = false; t += String.fromCharCode(n); n = 0; continue; } if ( !mode ) n = n * 10 + Number(c1); // 10進数 else n = n * 16 + hexNum(c1); // 16進数 } if ( i <= len - 2 ) { for ( ; i < len; i++ ) t += s.charAt(i); } return ( t ); } obj = external.menuArguments; // 右クリック時の引数オブジェクト str = obj.document.selection.createRange().text; // 選択されている文字列 s = decodeNumber(str); setSelection(s); </script>
追記
textarea に対して上記スクリプトを適用したい場合は、contexts の値を 63 (0x0000003f) でレジストリに登録してください。
投稿者: tsupo 2008.02.29 午前 12:35
| 固定リンク
| コメント (0)
| トラックバック (0)
|
|
|
|
右クリック(MenuExt) -- バックナンバー
右クリックで英和、和英(powered by 『英辞郎 on the Web』)






複数のソーシャルブックマークサービスに同時に投稿するスクリプト (newsing対応版)






複数のソーシャルブックマークサービスに同時に投稿するスクリプト (livedoorクリップ、next.1470.net対応版)






複数のソーシャルブックマークサービスに同時に投稿するスクリプト






ニフティのソーシャルブックマーク「ニフティクリップ」、サービス開始






右クリックで Amazon (2006年5月版)






Google Notebook






右クリックではてなブックマーク、ついでにdel.icio.us (はてなブックマーク「コレクション」対応版)
さらに過去の記事
右クリックで Amazon アソシエイト スポーツストア対応版
右クリックで Amazon アソシエイト 「なか見! 検索」対応版
右クリックで はてなブックマーク、ついでに del.icio.us (はてな投げ銭対応版)
右クリックで はてなブックマーク、ついでに del.icio.us (2005年7月版)
右クリックで はてなブックマーク、ついでに del.icio.us (改訂2版)
右クリックで はてなブックマーク、ついでに del.icio.us (改訂版)
右クリックで はてなブックマーク、ついでに del.icio.us
右クリックで Amazonアソシエイト (画像付き) 【2005年版】
Technorati tags MenuExt / 右クリックで Technorati の tag はりつけ
右クリックで「A8.NET経由楽天市場・画像付き」楽天トラベル対応版
[メモ] 右クリック禁止状態のWebページで右クリックを使う方法
Amazonで見つけた書籍を他のオンライン書店のアフィリエイトURLに変換するブックマークレット
右クリックで ISBN からオンライン書店の URL を生成するスクリプト
cocohore! bookmarklet がうまく動かないのはどういうときか?
cbook24.com も自由テキストリンクによる任意アイテムへのリンクができない
「セガダイレクト」の商品ページへ直接アフィリエイトリンクをはるMenuExt
記事タイトルを記事自体から取得する MyClip! (MenuExt版)
RSS Feed を SharpReader に取り込む MenuExt