右クリック(MenuExt)

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

観測気球 » 右クリック(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 も動くようになりました。

Ie8menuexthint
「マイコンピューターでのファイルでのアクティブコンテンツの実行を許可する」をチェック

それにしても何で prompt だけ、こんなことになってしまってるんでしょうね。不思議です。IE7 のときは、prompt だけじゃなくて、MenuExt な JavaScipt 全滅だったのに。セキュリティ的には IE7 の方が正しい「既定動作」だと思います。不評だったとかで変えちゃったのかなぁ? それにしても中途半端な変更ですね。

投稿者: tsupo 2009.11.29 午前 06:03 | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

右クリックで「数値参照デコード」

ないと困る場面が出てきたので、作ってみました。やっつけで作ったので、ソースはかなり適当ですが、いちおう動作確認済みです。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) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

右クリック(MenuExt) -- バックナンバー

右クリックで英和、和英(powered by 『英辞郎 on the Web』)

[要旨]
英辞郎が強力になったということで、より手軽に利用できるように、「右クリックで英辞郎」というのを作ってみました。
[記事本文を読む] | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

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

[要旨]
2006年7月27日にオープンした newsing にも対応してみました。これで、22箇所へ同時に登録(クリップ)することができます。
[記事本文を読む] | コメント (0) | トラックバック (2) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

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

[要旨]
livedoorクリップ(2006年6月28日ベータ版サービス開始)とnext.1470.net(次期1470.net開発テストバージョン、2006年6月23日公開)にも対応してみました。ということで、最大21箇所同時にブックマークを投稿できるようになりました。
[記事本文を読む] | コメント (0) | トラックバック (1) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

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

[要旨]
「右クリックでナンタラカンタラ」というスクリプトが増えてきたので、とりあえず、ソーシャルブックマーク系のスクリプトを1本に統合してみました。これで、右クリックメニューのダイエットができます。
[記事本文を読む] | コメント (3) | トラックバック (3) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

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

[要旨]
早速、使ってみました。クリップ一覧を見る限り、「はてなブックマーク」にそっくりです。登録したブックマークを公開するか、非公開にするか、登録するタイミングで指定できるのはいいかもしれませんね。
[記事本文を読む] | コメント (0) | トラックバック (2) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

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

[要旨]
Amazon.co.jp の商品個別ページの URL が http://www.amazon.co.jp/exec/obidos/ASIN/ASIN番号/ から http://www.amazon.co.jp/gp/product/ASIN番号/ に変更されました。それに合わせて、「右クリックで Amazon」も書き直してみました。
[記事本文を読む] | コメント (0) | トラックバック (3) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

Google Notebook

[要旨]
IE でアクセスすると IE 用の Google Notebook、Firefox でアクセスすると Firefox 用の Google Notebook が、各々ダウンロード、インストールできます。とりあえず、両方ともインストールしてみました。
[記事本文を読む] | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

右クリックではてなブックマーク、ついでにdel.icio.us (はてなブックマーク「コレクション」対応版)

[要旨]
いまさらのような気がしますが、はてなブックマークの「コレクション」に対応してみました。
[記事本文を読む] | コメント (0) | トラックバック (1) | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数

さらに過去の記事

右クリックで「ドリコムRSS - Clip」改訂版

右クリックで Google Bookmark

cbook24.com、ようやくマイリンク対応

右クリック一発で、アフィリエイトリンク集を生成するテスト

ドリコムRSS

右クリックで Amazon アソシエイト スポーツストア対応版

右クリックで Gmail It ! (改訂版)

右クリックで「ECナビ人気ニュース」

右クリックで Amazon アソシエイト 「なか見! 検索」対応版

右クリックで MM/Memo

右クリックで はてなブックマーク、ついでに del.icio.us (はてな投げ銭対応版)

電子書籍販売サイト ΣBookJp の商品リンク

右クリックで「モヒカン族」 (改訂版)

右クリックで はてなブックマーク、ついでに del.icio.us (2005年7月版)

右クリックで「モヒカン族」

右クリックで はてなブックマーク、ついでに del.icio.us (改訂2版)

右クリックで はてなブックマーク、ついでに del.icio.us (改訂版)

右クリックで blockquote (改訂2版)

右クリックで はてなブックマーク、ついでに del.icio.us

右クリックで Amazonアソシエイト (画像付き) 【2005年版】

Amazonアソシエイトの新しい形式のリンク

bk1 リニューアルに伴う各種スクリプトの変更

右クリックで bk1(画像付き) リニューアル対応版

アマゾンアソシエイト 拡張型リンク

BlogPeople Tags

Technorati tags MenuExt / 右クリックで Technorati の tag はりつけ

右クリックで del.icio.us

右クリックで blockquote (改訂版)

右クリックでキーワードサーチリンク生成

アフィリエイト自動リンクメーカー

リンクをはってみるテスト (続き)

リンクをはってみるテスト

ヤミと帽子と本の旅人 - リリスのヴィネット・フィギュア

右クリックで「A8.NET経由楽天市場・画像付き」楽天トラベル対応版

右クリックで「A8.NET経由楽天市場・画像付き」改定版

右クリックで「A8.NET経由楽天市場・画像付き」

右クリックで「A8.NET経由楽天ブックス・画像付き」

右クリックで Gmail It !

[メモ] 右クリック禁止状態のWebページで右クリックを使う方法

Amazonで見つけた書籍を他のオンライン書店のアフィリエイトURLに変換するブックマークレット

右クリックで「bk1ブリーダー(画像付き)」

右クリックで「ココログ過去記事編集」

右クリックでココログ全文検索

右クリックで Amazonアソシエイト (画像付き)

右クリックで未来検索

右クリックでトラックバック

「右クリックで楽天アフィリエイト」 改定版

BLOG HACKS、bk1 で予約開始

ココログのドメインマッピングと cocohore!

右クリックで「楽天アフィリエイト」

右クリックで ISBN からオンライン書店の URL を生成するスクリプト

右クリックで cocohore!

cocohore! bookmarklet がうまく動かないのはどういうときか?

cbook24.com も自由テキストリンクによる任意アイテムへのリンクができない

「セガダイレクト」の商品ページへ直接アフィリエイトリンクをはるMenuExt

SEGAダイレクトのアフィリエイト

コメント記録機能強化(?)版の extedit

記事タイトルを記事自体から取得する MyClip! (MenuExt版)

昨日から試しに使おうとしてるんだけど

MenuExt -- IE の「右クリック拡張」

RSS Feed を SharpReader に取り込む MenuExt

右クリックで blockquote

「右クリック」で登録 (実際に使ってみて)

「BlogPeople に登録」を右クリックで実行

クイック投稿って?

クイック投稿はログインしておかないと使えない?

興味があったら、どうぞ

カテゴリ一覧