2006/11/02(木) [n年前の日記]
#1 [firefox] Firefox 2.0 で、リンクに対するコンテキストメニューが出てこなくてハマる
Firefox 2.0 に置き換えてはみたものの。どうもある瞬間から、リンクに対するコンテキストメニューが出てこなくなるときがある。再現条件が今一つはっきりしないのがアレだけど。拡張の相性でも出てるのだろうか。うーん。
不思議なことに、コンテキストメニューの中でも、IE Tab のリンクに対する項目は表示されるんだよなぁ…。
不思議なことに、コンテキストメニューの中でも、IE Tab のリンクに対する項目は表示されるんだよなぁ…。
◎ もしかして、JSActions かしら。 :
色々試してるうちに、なんだかそんな気がしてきた。選択範囲の文字列を取得 → 変換 → クリップボードに入れる or それを使ってタブを開く、という処理をするスクリプトを実行すると、件の症状が発生する。ような。…いや、間違いなく発生するなぁ。
例えば、 _選択範囲内のhttp/ttpを新規タブで開く[addTab] というスクリプトを実行すると発生する…。
スクリプト格納フォルダ内の、globalフォルダと、selectionフォルダの中に、同じスクリプトを入れて、それぞれ実行してみた。どちらでも症状が発生する。…てことは、selectionフォルダ中のスクリプトを実行するから起きる、ということではなさげ。
選択範囲→アンカー文字列を作成→クリップボードに入れるスクリプトもあるのだけど、それを実行しても件の不具合は発生しない。また、JSActions の配布サイトで公開されてる、標準スクリプト中の、「selection/選択範囲内のリンクを開く.js」も、実行してみても不具合は起きず。…てことは、選択範囲から何かを取得するとか、クリップボードに入れるとか、そのへんで不具合が出てるわけでもなさげ。
となると、正規表現を使ったり、配列(?)に対して処理を行ってるあたりで、問題が出てるということなのかしら。
念のために、JSActions 以外の拡張を全て無効にして動作確認もしてみた。が、結果変わらず。
Firefox 2.0 の導入時に、profiles は新規作成し直しているので、1.5.0.7 に上書きしたからどうこう、ということではないだろうと思うのだけど。ウチ特有の現象なのかしらん。
例えば、 _選択範囲内のhttp/ttpを新規タブで開く[addTab] というスクリプトを実行すると発生する…。
スクリプト格納フォルダ内の、globalフォルダと、selectionフォルダの中に、同じスクリプトを入れて、それぞれ実行してみた。どちらでも症状が発生する。…てことは、selectionフォルダ中のスクリプトを実行するから起きる、ということではなさげ。
選択範囲→アンカー文字列を作成→クリップボードに入れるスクリプトもあるのだけど、それを実行しても件の不具合は発生しない。また、JSActions の配布サイトで公開されてる、標準スクリプト中の、「selection/選択範囲内のリンクを開く.js」も、実行してみても不具合は起きず。…てことは、選択範囲から何かを取得するとか、クリップボードに入れるとか、そのへんで不具合が出てるわけでもなさげ。
となると、正規表現を使ったり、配列(?)に対して処理を行ってるあたりで、問題が出てるということなのかしら。
念のために、JSActions 以外の拡張を全て無効にして動作確認もしてみた。が、結果変わらず。
Firefox 2.0 の導入時に、profiles は新規作成し直しているので、1.5.0.7 に上書きしたからどうこう、ということではないだろうと思うのだけど。ウチ特有の現象なのかしらん。
◎ 不具合が起きてる際のキャプチャ画像。 :
通常なら、ページの何もないところ、および、リンク上で右クリックすると、下のようなメニューが表示される。
で、件のJSAスクリプトを使ってみると。
その後は、全てのタブにおいて、下のようなメニューになる。
で、件のJSAスクリプトを使ってみると。
その後は、全てのタブにおいて、下のようなメニューになる。
◎ 動作確認用リンクをメモ。 :
◎ テスト中のスクリプトをメモ。 :
// 選択範囲内のすべての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 自体を再インストール。
Firefox 自体を再インストール。
[ ツッコむ ]
以上です。