Windows phone 8 如何将数据传回网页?

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;

我正在开发一个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;

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);" +
                            "");