0

私はたくさんの読書をしましたが、なぜこれがうまくいかないのか理解できません。現在のアップデートでVS2010を使用しています。WebページをC#Webブラウザコントロールにロードしたい(このアプリケーションはWindowsフォームアプリケーションです):

this.webBrowser1.Navigate("https://mydomain/L1/L2/L3/L4/webpage.asp");
this.webBrowser1.PerformLayout();

私の理解では、C#からJavascript関数を呼び出すには、次を使用します。

this.webBrowser1.Document.InvokeScript("passwordReset");

または、渡すパラメータがある場合:

object[] parameters = new object[3];
parameters[0] = “1”;
parameters[0] = false;
parameters[0] = “3”;

webBrowser1.Document.InvokeScript("passwordReset", parameters);

私のWebページのコードは次のとおりです。私が試した両方の方法を示しました。ページにJavascriptを挿入すると、うまくいくようです。

制限があるため、この方法を使用したくありません。次のように*.jsファイルを呼び出すことができる必要があります。

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>My Test Page...</title>

<script type="text/javascript" language="javaScript"> 
function passwordReset()
{
alert("You're about to change your password!!");
}
</script>

<script type="text/javascript" src="/L1/L2/Password_Reset.js"></script>

</head>

両方のJavascriptを同時にページに含めていないことに注意してください。この例には両方を含めただけです。

「Password_Reset.js」ファイルの関数を呼び出すときに、このメソッドが期待どおりに機能しない理由を誰かが説明できますか?

フルパーミッションを設定してみました:[PermissionSet(SecurityAction.Demand、Name = "FullTrust")]

また、このアプリをCom Visibleにする:[System.Runtime.InteropServices.ComVisibleAttribute(true)]

編集:私が達成しようとしているのは、webBrowser1.Navigate( "URL");の後にJavascriptを実行できるようにすることです。次のようにページコードに書き込まれる場合:

<script type="text/javascript" src="/L1/L2/Password_Reset.js"></script>

編集:私の質問を再読する際に、この問題はフォルダレベルの問題であり、スクリプトがロードされていないのではないかと思いますか?誰かがこれについてアドバイスできますか?

4

2 に答える 2

0

あなたが何を成し遂げようとしているのかわかりません。

ただし、起動スクリプトの登録方法を確認することをお勧めします。それらを使用すると、HTMLドキュメントの読み込み後にクライアントブラウザでJavaScript関数が実行されます。

この記事を見てください。多分あなたはそれを使ってあなたの問題を解決することができます。

于 2013-02-03T22:45:23.093 に答える
0

解決策は、結局のところ、非常に単純で、少し明白な側面でした。少し恥ずかしいです。

ブラウザ制御ドキュメントが完了したら:

webBrowser1.DocumentCompleted +=new WebBrowserDocumentCompletedEventHandler(webBrowserTest_DocumentCompleted);

イベントが呼び出されたとき、およびいつ:

webBrowser1.PerformLayout();

実行されましたが、Javascriptsは、この段階では、私が見ることができるものから完全にロードされていません。遅延タイマーを設定して1000ミリ秒をカウントしてから、Javascriptを呼び出すと、すべてが完全に機能します。これは、JavaScriptの呼び出しを遅らせることで、バックグラウンドで別の問題を解決できるようになっていない限りです。

次に解決すべきことは、DocumentCompletedイベントハンドラーに期待どおりのスクリプトの読み込みが含まれていない理由です。

他の人がこれを役立てて、問題の解決に費やす時間を節約できることを願っています。

于 2013-02-04T09:08:38.237 に答える