我有一个UWP应用程序,我正在尝试从WebView调用脚本。 NavigationCompleted事件引发并且我的javascript被包含在内(我认为)在页面中但是脚本没有被执行。
这是我的C#代码
public sealed partial class MainPage : Page
{
readonly WebView _webView = new WebView();
public MainPage()
{
this.InitializeComponent();
Facebook.Navigate(new Uri("http://www.facebook.com/"));
_webView.NavigationCompleted += WebView_OnNavigationCompleted;
_webView.ScriptNotify += WebView_OnScriptNotify;
}
private async void WebView_OnNavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
await _webView.InvokeScriptAsync("eval", new[]
{
"alert('HEY');" +
"window.external.notify('%%' + location.href);"
});
}
private void WebView_OnScriptNotify(object sender, NotifyEventArgs e)
{
var url = e.Value;
}
}
此外,我将http://www.facebook.com和https://www.facebook.com添加到我的包清单内容Uris列表中(包含所有WinRT访问权限)。
我无法获得提示弹出,同样适用于通知。
由于
答案 0 :(得分:0)
如WebView docs所述,alert
无法在WebView控件中使用。
要使脚本通知正常工作,您还需要将页面添加到应用清单中:
要在调用window.external.notify时启用外部网页以触发ScriptNotify事件,您必须在应用清单的ApplicationContentUriRules部分中包含页面的统一资源标识符(URI)。
和
此列表中的URI必须使用HTTPS
因此,请尝试导航到https网站。
最糟糕的情况是,您可以使用网络允许的对象与您的应用进行通信,因为可以在所有情况下注入。