- PR -

WebBrowserでJavaScriptを実行するとTitleChangeイベントが発生しない

1
投稿者投稿内容
さっちん
会議室デビュー日: 2004/05/19
投稿数: 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

スキルアップ/キャリアアップ(JOB@IT)