- - PR -
WebBrowserでJavaScriptを実行するとTitleChangeイベントが発生しない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-05-19 16:02
はじめまして。
C#.NET、JavaScriptで開発を行っている者です。 現在WebBrowserコントロールのNavigateでHTMLファイルを表示させています。 HTMLファイルには画面をスクロールさせるJavaScriptを含んでいて、 スクロール終了時にdocument.titleを変更させることで APのTitleChangeでイベントを拾っています。 AP側でスクロール中に速度変更要求があった場合のみ 再度NavigateでJavaScriptの関数を呼び出しているのですが、 このAP側からJavaScriptを呼び出した時だけ、TitleChangeイベントが 発生しません。 どなたかこれを回避する方法をご存知の方はいますでしょうか? よろしくお願いします。 ソースは以下の通りです。 [HTMLファイル]============================================ <html> <head> <title>TEST</title> <SCRIPT language="JavaScript"> <!-- Timer = 0; Scroll = 1; function windowScroll() { Timer = setTimeout("windowScroll()", Scroll); window.scrollBy(0, 1); if((document.body.scrollTop >= document.body.scrollHeight-document.body.clientHeight) || (document.body.scrollTop <= 0)) { clearTimeout(Timer); window.document.title = "ScrollEnd"; } else { window.document.title = "TEST"; } } function speedChange(newScroll) { Scroll = newScroll; if(Scroll < 0) { clearTimeout(Timer); } else { clearTimeout(Timer); Timer = setTimeout("windowScroll()", Scroll); } } //--> </SCRIPT> </head> <body onload="windowScroll()"> ・・・ ============================================================= [CSファイル]============================================ // HTMLファイルの表示 private void MyNavigate(string strUrl) { Object poi = null; axWebBrowser1.Navigate(strUrl, ref poi, ・・・); } // JavaScriptの実行 private void ScrollSpeedChange(int speed) { Object poi = null; string strUrl = "javascript:(speedChange(" + speed.ToString() + "))"; axWebBrowser1.Navigate(strUrl, ref poi, ・・・); } // TitleChangeイベント private void axWebBrowser1_TitleChange(object sender, ・・・) { // スクロール終わったら次のページを表示したいが // ScrollSpeedChange()を途中で呼ぶとイベントが発生しない IHTMLDocument2 myDoc = (IHTMLDocument2) this.axWebBrowser1.Document; if (myDoc.title == "ScrollEnd") { // なんかの処理 ; } } ============================================================= |
1