mieki256's diary



2006/11/02(木) [n年前の日記]

#1 [firefox] Firefox 2.0 で、リンクに対するコンテキストメニューが出てこなくてハマる

Firefox 2.0 に置き換えてはみたものの。どうもある瞬間から、リンクに対するコンテキストメニューが出てこなくなるときがある。再現条件が今一つはっきりしないのがアレだけど。拡張の相性でも出てるのだろうか。うーん。

不思議なことに、コンテキストメニューの中でも、IE Tab のリンクに対する項目は表示されるんだよなぁ…。

もしかして、JSActions かしら。 :

色々試してるうちに、なんだかそんな気がしてきた。選択範囲の文字列を取得 → 変換 → クリップボードに入れる or それを使ってタブを開く、という処理をするスクリプトを実行すると、件の症状が発生する。ような。…いや、間違いなく発生するなぁ。

例えば、 _選択範囲内のhttp/ttpを新規タブで開く[addTab] というスクリプトを実行すると発生する…。

スクリプト格納フォルダ内の、globalフォルダと、selectionフォルダの中に、同じスクリプトを入れて、それぞれ実行してみた。どちらでも症状が発生する。…てことは、selectionフォルダ中のスクリプトを実行するから起きる、ということではなさげ。

選択範囲→アンカー文字列を作成→クリップボードに入れるスクリプトもあるのだけど、それを実行しても件の不具合は発生しない。また、JSActions の配布サイトで公開されてる、標準スクリプト中の、「selection/選択範囲内のリンクを開く.js」も、実行してみても不具合は起きず。…てことは、選択範囲から何かを取得するとか、クリップボードに入れるとか、そのへんで不具合が出てるわけでもなさげ。

となると、正規表現を使ったり、配列(?)に対して処理を行ってるあたりで、問題が出てるということなのかしら。

念のために、JSActions 以外の拡張を全て無効にして動作確認もしてみた。が、結果変わらず。

Firefox 2.0 の導入時に、profiles は新規作成し直しているので、1.5.0.7 に上書きしたからどうこう、ということではないだろうと思うのだけど。ウチ特有の現象なのかしらん。

不具合が起きてる際のキャプチャ画像。 :

通常なら、ページの何もないところ、および、リンク上で右クリックすると、下のようなメニューが表示される。
ページの何も無いところで右クリックした際のコンテキストメニュー。

リンク上で右クリックした際のコンテキストメニュー。

で、件のJSAスクリプトを使ってみると。
スクリプトを実行してみる。

その後は、全てのタブにおいて、下のようなメニューになる。
ページの何もないところで右クリックした際のコンテキストメニュー。(不具合が出てる版。)

ページの何もないところで右クリックした際のコンテキストメニュー。(不具合が出てる版。)

動作確認用リンクをメモ。 :

ttp://www.yahoo.co.jp/
ttp://headlines.yahoo.co.jp/
ttp://tv.yahoo.co.jp/

_LINK1
_LINK2
_LINK3

テスト中のスクリプトをメモ。 :

// 選択範囲内のすべてのttp/http/ttps/httpsをクリップボードにコピー

jsa_copyUriTexts();

function jsa_copyUriTexts() {

    // 選択範囲があるかどうかをチェック
    if ( _jsaCScript.context.isTextSelected ) {
        // 選択範囲がある。

        // 選択範囲を変数にコピー。
        var sel = _jsaCScript.context.selection;
        // var sel = document.getSelection();

        // URLとおぼしき部分を取得
        // var s = jsa_getUriTexts_Test(sel);    // こっちは問題がおきない
        var s = jsa_getUriTexts(sel);            // こっちは問題がおきる

        // URLとおぼしき部分が返ってきたなら、クリップボードにコピー。
        if ( s != "" ) _jsaCScript.setClipBoardString(s);
    }
}

// 正規表現でURLらしき部分を取り出して返す。
function jsa_getUriTexts(s) {
    var results = "";
    var list = s.match(/ttp[s]*:\/\/[a-zA-Z0-9\.\?\=\&\/\-\~\_\%\#]+/g);
    if ( list != null ) {
        for ( var i=0; i < list.length; i++) {
            results = results + "h" + list[i].toString() + "\n";
        }
    }
    return results;
}

// 与えられた文字列をそのまま返す。(テスト用)
function jsa_getUriTexts_Test(s) {
    return s;
}

新規 profiles を作成して動作確認。 :

してるうちに、選択して右クリックするだけでコンテキストメニューの全項目が表示される状態に。何度となく profiles を作成してもそうなってしまう。何故だ…。

Firefox 自体を再インストール。

以上です。

過去ログ表示

Prev - 2006/11 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project