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



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2008年12月12日(金) 22:02 
オフライン

登録日時: 2008年8月24日(日) 21:09
記事: 33
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:05 
オフライン

登録日時: 2008年8月24日(日) 21:09
記事: 33
書いてから思いましたが、普通にバグとして報告すべきかもしれませんね……。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2008年12月13日(土) 01:06 
オフライン
Moderator

登録日時: 2006年10月29日(日) 21:56
記事: 472
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月14日(日) 18:53 
オフライン

登録日時: 2008年8月24日(日) 21:09
記事: 33
あ さんが書きました:
webBrowserFind.QueryInterface(Components.interfaces.nsIWebBrowserFindInFrames).currentSearchFrame の値を設定するのが誰の仕事なのか、という問題だと思うのですが、こういったコードを見た感じでは、自動的に設定してもらえるわけではなくて webBrowserFind を利用する側の責任で設定しないといけないような気がします。


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

とりあえず問題は解決しました。ありがとうございます。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2008年12月15日(月) 23:55 
オフライン
Moderator

登録日時: 2006年10月29日(日) 21:56
記事: 472
masahal さんが書きました:
なるほどFirefoxの元コードを見なきゃなりませんでしたか。

見なきゃならないわけではないですが、使用例を探すにはいいと思います。
あるいは、似たようなことをしているアドオンを知っているなら、そのソースを見てみるとか。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 5 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[4人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

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