0

wp8 の webbrowser コントロールにロードされた web サイトからいくつかの変数を読み取りたいです。私は HTML スクリプトを安全に扱うことができません。したがって、「webBrowser.InvokeScript」などで可能かどうかはわかりません。

サイトは次のようになります。

<html class="no-js mobile">
<head><script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new  Date().getTime()]);</script>
<title>test</title><meta content="width=320, initial-scale=1.0, user-scalable=no" name="viewport">

<script>
  //<![CDATA[
    window.current_ip = '31.17.30.54';
  //]]>
</script>

<script>
  //<![CDATA[
    window.current_checkout = "{&quot;id&quot;:0,&quot;domestic&quot;:false,&quot;amount&quot;:0.0,&quot;updated_at&quot;:0,&quot;created_at&quot;:0}";
  //]]>
</script>

<script type="text/javascript">
  var _sift = _sift || [];
  _sift.push(['_setAccount', '637102']);
  _sift.push(['_setUserId', '1878617619']);
  _sift.push(['_trackPageview']);

  (function() {
    function loadSift() {
      var sift = document.createElement('script');
      sift.type = 'text/javascript';
      sift.async = true;
      sift.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'dtlilztwypawv.cloudfront.net/s.js';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(sift, s);
    }
    if (window.attachEvent) {
      window.attachEvent('onload', loadSift);
    } else {
      window.addEventListener('load', loadSift, false);
    }
  })();
</script>

</head>

誰かが私を半分にしてくれたら本当に嬉しいです!

編集 - - - - - - - - - -

解決に一歩近づいたと思います。私は成功してこのコードを実行します:

webBrowser.InvokeScript("eval", "newfunc_getmyvalue = function() { return 'hello'; }");
string s1 = (string)webBrowser.InvokeScript("newfunc_getmyvalue");

「window.current_checkout = ...」が正確に何をするのかを知る必要があるだけですか? 本当に変数を設定していますか?また、「hello」スクリプトを変更してこの値を返すにはどうすればよいですか?

4

2 に答える 2

0

呼び出されたスクリプトから戻り値を取得するには、windows.external.notify() を呼び出す必要があり、WebBrowser コントロールは ScriptNotify イベント ハンドラーを宣言してデータを (e.Value で) キャッチする必要があります。

したがって、この:

webBrowser.InvokeScript("eval", "window.external.notify(window.current_checkout);");

Web ページから値を発行する必要があります。

private void webBrowser_ScriptNotify(object sender, NotifyEventArgs e)
{
    string response = e.Value;
    // do something wonderful with response
}

アプリでキャプチャする必要があります。

于 2013-09-06T04:19:18.397 に答える
0

ライブラリを使用HtmlAgilityPackして html を解析し、xpath または linq-to-xml を使用して変数を見つけることができます。でhtmlをダウンロードしてwebclientから、ライブラリで解析します。html をダウンロードする他の方法もあります。

于 2013-06-29T23:09:30.140 に答える