c# - 有没有办法让来自外部链接的弹出窗口在 Xamarin IOS WKWebview 上工作?
问题描述
大家好,我是从事此项目的 Xamarin 开发人员,其中有一些菜单项重定向到外部链接并将它们加载到 IOS 中的 WKWebview 中。面临的问题是,在您看到该页面上的任何内容之前,某些链接会重定向到显示登录弹出窗口的页面。弹出窗口未显示在 WebView 上。我已经尝试在我的自定义渲染上启用 JavaScript 和 JavaScriptCanOpenWindowsAutomatically 但它仍然无法正常工作我不确定做错了什么。如果我重定向到 Safari,它可以正常工作,但不建议这样做。以下链接是我的自定义渲染中的代码以及我如何在 xaml 中使用它。
[Xaml 用法][1]在此处输入图片描述
自定义渲染器中的代码
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
命名空间 Project.iOS.CustomRenderers {
public class CustomWebViewRenderer : ViewRenderer<CustomWebView, WKWebView>, IWKUIDelegate, IWKNavigationDelegate, IWKScriptMessageHandler
{
WKWebView wkWebView;
protected override void OnElementChanged(ElementChangedEventArgs<CustomWebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
WKPreferences pref = new WKPreferences() { JavaScriptCanOpenWindowsAutomatically = true, JavaScriptEnabled = true, };
var config = new WKWebViewConfiguration();
config.Preferences = pref;
wkWebView = new WKWebView(Frame, config);
wkWebView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
wkWebView.UIDelegate = new MyWKWebViewDelegate();
SetNativeControl(wkWebView);
}
if (e.NewElement != null)
{
var request = new NSMutableUrlRequest(new NSUrl(Element.Url));
Control.LoadRequest(request);
var webView = e.NewElement;
webView.EvaluateJavascript = async js =>
{
var reset = new ManualResetEvent(false);
Device.BeginInvokeOnMainThread(async () =>
{
try
{
await Control.EvaluateJavaScriptAsync(js);
}
catch (Exception)
{
//
}
});
await Task.Run(() => { reset.WaitOne(); });
return null;
};
}
}
}
解决方案
推荐阅读
- vba - PL/SQL 数据库值未正确反映到 SSIS 脚本
- mysql - 如何将我的 Android 应用程序连接到存储在服务器中的 MySQL 数据库?
- go - 如何根据请求 URL 使用 golang GIN 路由 HTTP 请求
- angular - Rxjs:被困在返回一个参数数组
- react-native - 未定义不是函数(评估'object.getOwnPropertyDescriptors(arguments [i])')
- excel - 如何创建一个删除包含先前日期的行的循环
- python - 每当我运行此代码时,Spider Kernel 都会死机
- python - 模型覆盖另一个模型
- python - 不同形状的列表
- python - 安装后无法运行matplotlib库的功能