我在 xamarin 中使用 webview,我遵循了许多教程来处理导航,并且一切正常。我的问题是:当锚标记具有 target="_blank" 时,导航事件永远不会被触发。
我看到周围有人给出了一个 javascript 解决方案,它删除了 target=_blank 并将其附加在 href 链接的末尾。
这真的是正确的方法吗?看有线..
谢谢
这是 xamarin.android 渲染器中的初始化
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
global::Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);
if (e.OldElement != null)
{
Control.RemoveJavascriptInterface("jsBridge");
((HybridWebView)Element).Cleanup();
}
if (e.NewElement != null)
{
Control.Settings.JavaScriptEnabled = true;
Control.Settings.DomStorageEnabled = true;
Control.Settings.JavaScriptCanOpenWindowsAutomatically = true;
Control.Settings.SetSupportMultipleWindows(true);
Control.Settings.AllowFileAccessFromFileURLs = true;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.Settings.UserAgentString = Control.Settings.UserAgentString + " crmvw";
Android.Webkit.WebChromeClient xCC = new CustChromeWebViewClient(_context);
Control.SetWebChromeClient(xCC);
Control.SetWebViewClient(new CrmWebViewClient(this, $"javascript: {JavascriptFunction}"));
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
Control.LoadUrl(((HybridWebView)Element).Uri);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的导航事件,当锚点有 target=_blank 时从未触发 …