masahal さんが書きました:
webBrowserFindでの文字列検索が時々別のタブ内のブラウザで行われてしまいます。
検索しても詳しいドキュメントが見つからないんですが、どういう書き方をすればいいんでしょうか。
webBrowserFind.QueryInterface(Components.interfaces.nsIWebBrowserFindInFrames).currentSearchFrame の値を設定するのが誰の仕事なのか、という問題だと思うのですが、
こういったコードを見た感じでは、自動的に設定してもらえるわけではなくて webBrowserFind を利用する側の責任で設定しないといけないような気がします。
とりあえず、
コード:
var browser = gBrowser.selectedBrowser;
var webBrowserFind = browser.webBrowserFind;
webBrowserFind.QueryInterface(Components.interfaces.nsIWebBrowserFindInFrames).currentSearchFrame = window.content;
webBrowserFind.searchString = "Facebook";
webBrowserFind.wrapFind = true;
webBrowserFind.findNext();
このようにすればそのタブのコンテンツのトップのフレームから検索されますので、そのタブ内で検索されるはずです。
ただしこの場合、子フレームで見つかったような場合でも、その次の検索では親フレームに戻ってしまいます。
まじめにやるなら各タブごとの currentSearchFrame を保持しておいて、タブ切り替え時か検索前に、そのタブ用の currentSearchFrame を設定し直さないといけないんじゃないでしょうか。