2011-09-01 57 views

回答

12

不是直接的,但WebBrowser中的JavaScript可以通過使用window.external.notify異步調用應用程序。該應用程序可以使用WebBrowser.ScriptNotify事件檢測這些通知,並使用WebBrowser.InvokeScript回撥javascript。

這是一個(未經測試的)例子。

HTML:

<html> 
<head> 
<script type="text/javascript"> 
    function beginCalculate() 
    { 
     var inputValue = parseInt(document.getElementById('inputText').value); 

     window.external.notify(inputValue); 
    } 

    function endCalculate(result) 
    { 
     document.getElementById('result').innerHTML = result; 
    } 
</script> 
</head> 
<body> 
    <h2>Add 5 to a number using notify</h2> 

    <div> 
     <input type="text" id="inputText" /> 
     <span> + 5 =</span> 
     <span id="result">??</span> 
    </div> 

    <input type="button" onclick="beginCalculate()" /> 
</body> 
</html> 

應用:

/// <WebBrowser x:Name="Browser" ScriptNotify="Browser_ScriptNotify" /> 

private void Browser_ScriptNotify(objec sender, NotifyEventArgs e) 
{ 
    int value = Int32.Parse(e.Value); 

    string result = (value + 5).ToString(); 

    // endCalculate can return a value 
    object scriptResult = Browser.InvokeScript("endCalculate", result); 
} 
0

如果您正在使用WP7的WebBrowser連接到遠程網站(並且情況必然如此,並且WP7不託管Web服務器),您也可以從普通桌面測試Web應用程序。

通常,如果您需要在客戶端(JavaScript)和服務器端(您的案例中的C#)之間進行通信,具體取決於具體上下文和需求,您可以使用一些不同的技術,例如Page Methods頁面方法)。

這是我的理解,WP7瀏覽器介於IE8和IE9之間,稍微有限的JavaScript引擎相比,這兩者,但像頁面方法這樣的基本應該工作,然後我會首先從普通PC然後從手機並驗證是否有效,以及是否有什麼破裂。

+0

我很抱歉,如果我的問題是不明確的,但我的意思是在WP7應用程序代碼內,其WebBrowser控件是訪問C#對象放置。我的目標是在用戶在WebBrowser控件內部觸發Javascript事件時觸發自定義的WP7事件。 – thunderboltz

+0

JavaScript在瀏覽器中工作,C#駐留在服務器上。你如何想象打破網絡瀏覽器和外部世界之間的界限?您是否將瀏覽器嵌入到SL WP7應用程序中? –

+0

是的,瀏覽器在SL WP7應用程序中。 – thunderboltz

相關問題