我正在开发Windows Phone 8应用程序,我是Windows Phone 8的新手。
我正在使用WebBrowser Control并尝试加载具有javascript的html页面。
在button_Click事件上我正在调用Webbrowser.InvokeScript(“JavascriptFunctionName”),但它总是抛出错误:80020006,即使WebBrowser.isScriptEnabled = true。
以下是代码
Html页面:MyHtmlPage.html
<!DOCTYPE html>
<html>
<head title="test">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
padding: 0;
}
#map-canvas {
height: 100%;
}
</style>
<script type="text/javascript">
function initialize() {
var helloText = document.getElementById("Hello");
helloText.textContent = "Initialized";
return ("Initialize");
}
</script>
</head>
<body>
<div id="test-canvas" />
<label id="Hello">Hello</label>
</body>
</html>
Cs文件:MainPage.cs
private string TestUri = @"Html/Test.html";
private string stringHtml = string.Empty;
public MainPage()
{
InitializeComponent();
WebBrowser.IsScriptEnabled = true;
WebBrowser.IsGeolocationEnabled = true;
}
private void WebBrowser_Loaded(object sender, RoutedEventArgs e)
{
var resource = App.GetResourceStream(new Uri(TestUri, UriKind.Relative));
stringHtml = new StreamReader(resource.Stream).ReadToEnd();
WebBrowser.NavigateToString(stringHtml);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
//Error
string returnValue = WebBrowser.InvokeScript("initialize");
}
catch(Exception ex)
{
}
}
帮帮我...... 感谢。
答案 0 :(得分:1)
在WP8下使用NavigateToString
时,脚本没有被执行。以下测试证明了这一点,身体背景颜色不会变红。
<script type="text/javascript">
document.body.style.backgroundColor = "red";
window.initialize = function() {
document.body.style.backgroundColor = "blue";
var helloText = document.getElementById("Hello");
helloText.textContent = "Initialized";
return ("Initialize");
}
</script>
一种可能的解决方案是在隔离存储中创建一个临时文件,如described here。
另一种选择是导航到包含Navigate("about:blank")
的空白页面,处理WebBrowser.LoadCompleted事件,然后按照here所述注入所需的HTML和脚本。