我有一个Xamarin forms项目,其中我需要设置某些配置以允许文件访问。在原生xamarin ios项目中,它是通过WKWebviewConfiguration设置的,
_scormWKPreferences = new WKPreferences
{
JavaScriptEnabled = true
};
ClearCookies();
_scormWKPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowFileAccessFromFileURLs");
// _scormWKPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowUniversalAccessFromFileURLs");
_scormWKWebconfiguration = new WKWebViewConfiguration();
_scormWKWebconfiguration.Preferences = _scormWKPreferences;
_scormWKUserContentController = new WKUserContentController();
_scormWKUserContentController.AddScriptMessageHandler(this, WKSCRIPT_HANDLER);
_scormWKWebconfiguration.UserContentController = _scormWKUserContentController;
CGRect viewRect = new CGRect(0, 0, View.Frame.Width, View.Frame.Height);
_courseWKWebview = new WKWebView(viewRect, _scormWKWebconfiguration);我也必须在forms项目中实现同样的目标。目前,我已经在iOS模块中添加了一个自定义渲染器,但无法设置配置。请在下面找到CustomRenderer。
[assembly: ExportRenderer(typeof(WebView), typeof(ScholarApp.Droid.Reader.Scorm.ScormCustomRenderer))]
namespace ScholarApp.Droid.Reader.Scorm
{
public class ScormCustomRenderer : Xamarin.Forms.Platform.iOS.WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.OldElement == null && e.NewElement != null)
{
WKPreferences wkPreferences = new WKPreferences
{
JavaScriptEnabled = true
};
wkPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowFileAccessFromFileURLs");
WKWebViewConfiguration wkConfig = new WKWebViewConfiguration();
wkConfig.Preferences = wkPreferences;
WKWebView wkWebView = new WKWebView(Frame, wkConfig);
}
}
}
}如何将此配置设置为我的WebView?
发布于 2021-01-27 22:35:57
此外,您还可以尝试通过参数化的WkWebViewRenderer构造函数传递配置
public class CustomWebViewRenderer : WkWebViewRenderer
{
static WKWebViewConfiguration CreateConfiguration() => new WKWebViewConfiguration
{
Preferences = new WKPreferences
{
JavaScriptEnabled = true
}
};
public CustomWebViewRenderer() : base(CreateConfiguration()) { }
}发布于 2019-08-28 02:23:45
您可以调整渲染器:
public class MyWebViewRenderer : ViewRenderer<WebView, WKWebView>
{
WKWebView _wkWebView;
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
WKPreferences wkPreferences = new WKPreferences
{
JavaScriptEnabled = true
};
wkPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowFileAccessFromFileURLs");
WKWebViewConfiguration wkConfig = new WKWebViewConfiguration();
wkConfig.Preferences = wkPreferences;
_wkWebView = new WKWebView(Frame, config);
SetNativeControl(_wkWebView);
}
if (e.NewElement != null)
{
Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Source as UrlWebViewSource).Url)));
}
}
}https://stackoverflow.com/questions/57678036
复制相似问题