【发布时间】:2013-12-08 09:15:49
【问题描述】:
我的页面中有这个WebBrowser:
<WebBrowser HorizontalAlignment="Stretch" Name="Browser"
VerticalAlignment="Stretch" Grid.Column="1"/>
现在,在我加载一个页面后,我想注入一个 JavaScript 代码:
var doc = (HTMLDocument)Browser.Document;
var head = doc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
var script = (IHTMLScriptElement)doc.createElement("script");
script.text = MYSCRIPTCODE;
head.appendChild((IHTMLDOMNode)script);
在MYSCRIPTCODE我有这个功能:
function checkSomething() {
try{
var xhr = new XMLHttpRequest();
var url = 'weburl';
xhr.open("GET", url, true);
xhr.onreadystatechange = function () {
//Somecode
}
xhr.send();
} catch {
}
}
我运行它:
Browser.InvokeScript("checkSomething");
它工作完美,运行脚本没有任何问题。
我有另一种状态,我将本地 html 文件加载到浏览器:
Uri uri = new Uri(AppDomain.CurrentDomain.BaseDirectory + @"OfflinePage.html");
Browser.Navigate(uri);
当我想运行它时:
Browser.InvokeScript("checkSomething");
脚本中的这一行出现异常 - 权限被拒绝:
xhr.open("GET", url, true);
知道为什么会这样吗?为什么它可以在我从网络加载的页面中运行,而不能在本地 html 中运行?
【问题讨论】:
标签: c# .net wpf webbrowser-control