Windows phone 8 如何将数据传回网页?
我正在开发一个WP8应用程序,其中包含WebBrowser控件,我在其中打开一个包含javascript的html页面。javascript包含以下函数:Windows phone 8 如何将数据传回网页?,windows-phone-8,webbrowser-control,Windows Phone 8,Webbrowser Control,我正在开发一个WP8应用程序,其中包含WebBrowser控件,我在其中打开一个包含javascript的html页面。javascript包含以下函数: function send(data) { windows.external.notify(data); var xhr = new XMLHttpRequest(); xhr.open('GET', 'getresponse', false); xhr.send(null); var result = xhr.responseText;
function send(data) {
windows.external.notify(data);
var xhr = new XMLHttpRequest();
xhr.open('GET', 'getresponse', false);
xhr.send(null);
var result = xhr.responseText;
if (result) {
return JSON.parse(result);
}
}
基本上,这个函数调用应用程序的本机C#端,在这里我运行一些函数,我需要能够将一些数据从本机端返回给send函数。我想为此使用XMLHttpRequest,我的想法是“截取”请求url(在本例中为“getresponse”),并通过将其包含在响应中来返回所需的数据
在Windows Phone 8上使用WebBrowser控件是否可以执行此操作
再一次,我需要做的是:
有一个javascript函数(在本例中称为“send”),它连接到本机应用程序(使用windows.external.notify),并将数据传递回这个“send”函数,以便它可以返回数据(并且其他JS函数也可以使用它)
这可能吗?如果不使用XMLHttpRequest,可能使用另一种技术
谢谢大家的帮助 您正在寻找的
如果您完全控制WebBrowser中显示的页面(例如,服务器是您的),则可以定义要调用的JS函数:
webBrowser.InvokeScript("yourJSFunction", "param1", "param2");
如果显示来自国外Web服务器的网站,可以像这样插入JS(使用jQuery):
我使用了计时器,因为您无法确定在页面完全加载后是否调用了
如果你能控制源代码,你肯定应该选择选项1
webBrowser.InvokeScript("eval", "window.youInjectedFunction = function() {" +
"window.external.notify('and_notify_back');" +
"}; " +
"window.readyStateCheckInterval = setInterval(function() {" +
"window.external.notify('timer');" +
"if (document.readyState === 'complete') {" +
"clearInterval(window.readyStateCheckInterval);window.yourInjectedFuntion();" +
"}}, 100);" +
"");