MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

指定したURLを表示→読み込み後のdocumentを処理したい
https://forums.mozillazine.jp/viewtopic.php?f=26&t=8472
ページ 11

作成者:  sarasate [ 2009年5月03日(日) 08:08 ]
記事の件名:  指定したURLを表示→読み込み後のdocumentを処理したい

javascriptも知らない状態からとりあえず手探りで自分用のアドオンを作成しています。
環境は
Firefox 3.0.10
Windows XP SP3
です。
機能としては、右クリックメニュー等から実行してブラウザを自動操作するようなものです。
簡単に流れを書くと、

1.指定したwebページを表示

2.読み込み完了まで待つ

3.webページのフォームに記入してsubmit
コード:
var inp = window.content.document.getElementsByTagName("input");
inp[0].value = "C:\\hogehoge.txt";
window.content.document.forms[0].submit();


4.読み込み完了まで待つ

5.読込み完了したらそのdocumentのリンクを検索

というような感じです。
1,3,5はなんとかいけそうなのですが
2,4の「読込みを待つ」もしくは「読込み後のdocumentを取得する」をどのように実現したらいいのかわかりません。
vbscriptからIEを操作して似たような事する場合は

コード:
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate "http://hogehoge.com"
Do While objIE.Busy '読み込みが終わるまで待機
   WScript.Sleep 100
Loop
読込み後の処理

のような感じで実現できたので、これと同じような事ができればいいのかと思っているのですが…
それとももっと違うアプローチで実現させるべきものなのでしょうか

作成者:  georgei [ 2009年5月05日(火) 17:55 ]
記事の件名:  Re: 指定したURLを表示→読み込み後のdocumentを処理したい

sarasate さんが書きました:
2,4の「読込みを待つ」もしくは「読込み後のdocumentを取得する」をどのように実現したらいいのかわかりません。

私もここいら辺を試行錯誤中ですので、とりあえずわかる範囲で失礼します。

少なくとも 2 に関しては、addEventListener を使用するのがよろしいかと。

コード:
var newTab = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
newTab.addEventListener("load", myFunction, true);

タブブラウザ用コード - MDC より一部改変)

4 に関しても、submit 前後で removeEventListener して、再度 addEventListener かな、と思いますが、こちらは自信ありません。
ご参考になれば幸いです。

作成者:  sarasate [ 2009年5月06日(水) 08:02 ]
記事の件名:  Re: 指定したURLを表示→読み込み後のdocumentを処理したい

返信ありがとうございます。
なるほど、読み込み完了のイベントをトリガにして処理を進めていけば良かったのですね。
仰るとおり、2に関してはこれでいけそうです。

引用:
4 に関しても、submit 前後で removeEventListener して、再度 addEventListener かな、と思いますが、こちらは自信ありません。
ご参考になれば幸いです。


とりあえず適当なテストページで試してみたら、見事に動作しました。
addEventListenerで呼ばれた関数内でとりあえずremoveEventListerしておき、
次に3の処理(フォーム記入~submit)、
そして再度addEventListenerで5(読み込み後のリンク検索)を という順番で動作しました。
手順が増えてもaddEventListenerにリレーさせていくような感じでやればよさそうです。

ありがとうございました。

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/