― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - webBrowserFindが別のタブに働く
作成者 メッセージ
  記事の件名:  Re: webBrowserFindが別のタブに働く  引用付きで返信する
masahal さんが書きました:
なるほどFirefoxの元コードを見なきゃなりませんでしたか。

見なきゃならないわけではないですが、使用例を探すにはいいと思います。
あるいは、似たようなことをしているアドオンを知っているなら、そのソースを見てみるとか。
投稿記事 Posted: 2008年12月15日(月) 23:55
  記事の件名:  Re: webBrowserFindが別のタブに働く  引用付きで返信する
あ さんが書きました:
webBrowserFind.QueryInterface(Components.interfaces.nsIWebBrowserFindInFrames).currentSearchFrame の値を設定するのが誰の仕事なのか、という問題だと思うのですが、こういったコードを見た感じでは、自動的に設定してもらえるわけではなくて webBrowserFind を利用する側の責任で設定しないといけないような気がします。


なるほどFirefoxの元コードを見なきゃなりませんでしたか。

とりあえず問題は解決しました。ありがとうございます。
投稿記事 Posted: 2008年12月14日(日) 18:53
  記事の件名:  Re: webBrowserFindが別のタブに働く  引用付きで返信する
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 を設定し直さないといけないんじゃないでしょうか。
投稿記事 Posted: 2008年12月13日(土) 01:06
  記事の件名:  Re: webBrowserFindが別のタブに働く  引用付きで返信する
書いてから思いましたが、普通にバグとして報告すべきかもしれませんね……。
投稿記事 Posted: 2008年12月12日(金) 22:05
  記事の件名:  webBrowserFindが別のタブに働く  引用付きで返信する
webBrowserFindでの文字列検索が時々別のタブ内のブラウザで行われてしまいます。
検索しても詳しいドキュメントが見つからないんですが、どういう書き方をすればいいんでしょうか。

--------------------------------------------------------------
再現方法:
1.メニューから次の関数を実行できるようにする。
コード:
searchString : function(){
   var browser = gBrowser.selectedBrowser;
   var webBrowserFind = browser.webBrowserFind;
   webBrowserFind.searchString = "Facebook";
   webBrowserFind.wrapFind = true;
   webBrowserFind.findNext();
   return;
}


2.同じページ(ここでは http://mainichi.jp/life/electronics/cne ... tml?inb=ff を使います)を二つ開いておく。

3.一方のタブを選択して、上の関数を実行する。
4.もう一方のタブを選択して、上の関数を実行する。
5.再び元のタブを選択して、上の関数を実行する。
→webBrowserFindがもう一方のタブに対して行われる。
---------------------------------------------------------------------

環境は
Firefox3.04
WindowsXP
です。
投稿記事 Posted: 2008年12月12日(金) 22:02

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean