我想插入我自己的JavaScript呈现HTML(index.html的 - 目前在IsolatedStorage)在运行时。 为了充分利用JavaScript调用C# webBrowser_ScriptNotify
。 我将如何做到这一点,这是我努力实现这一目标。
string script = " <script type=\"text/javascript\"> function scriptNotify() { window.external.notify(\"runtime\");}</script>";
byte[] param = GetBytes(script);
webBrowser.Navigate(new Uri("/index.html", UriKind.Relative), param,"Content-Type: application/x-www-form-urlencoded");
private void webBrowser_ScriptNotify(object sender, NotifyEventArgs e)
{
if (e.Value.ToString().Equals("runtime"))
{
Debug.WriteLine("Call from dynamic javascript");
}
}
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
更新
在这里我的新尝试注入脚本标签在当前打开的HTML页面。
var scriptString = "var script=document.createElement('script');"
+ "script.type=\"text/javascript\";"
+ "script.InnerHTML=\"function callMe(){window.external.notify(\"runtime\")};\""
+ "document.getElementsByTagName('head')[0].appendChild(script);";
webBrowser.InvokeScript("eval", scriptString);
它与一些系统错误而失败。
System.SystemException was unhandled
Message: An unhandled exception of type 'System.SystemException' occurred in Microsoft.Phone.Interop.ni.dll
Additional information: An unknown error has occurred. Error: 80020101.
堆栈跟踪:
at Microsoft.Phone.Controls.NativeMethods.ValidateHResult(Int32 hr)
at Microsoft.Phone.Controls.WebBrowserInterop.InvokeScript(String scriptName, String[] args)
at Microsoft.Phone.Controls.WebBrowser.InvokeScript(String scriptName, String[] args)
at WebBrowserJSTest.MainPage.webBrowser_LoadCompleted(Object sender, NavigationEventArgs e)
提前致谢。