WKWebViewでajax(XmlHttpRequest)を使うには
Use ajax(XmlHttpRequest) on WKWebView
iOSの組み込みブラウザであるWKWebViewでは、標準状態ではクロスドメインアクセスを認めていないため、内部のJavaScriptからXMLHttpRequestを呼び出そうとするとエラーになります。これを解決するにはWKWebViewConfigurationで「allowUniversalAccessFromFileURLs」を定義します。
ここで注意したいのは「config.Preferences」ではなく「config」のキーとして登録すること。そうでないと、キーの定義が存在しないと例外が発生し、いつまで経っても有効になりません。
こちらはXamarin.iOSによるプログラム例です。
wkwebview.cs
WKWebViewConfiguration config;
WKUserContentController controller;
public WKWebView WebView { get; private set; }
public override void LoadView()
{
base.LoadView();
config = new WKWebViewConfiguration();
controller = new WKUserContentController();
config.UserContentController = controller;
config.Preferences.SetValueForKey(FromObject(true), new NSString("allowFileAccessFromFileURLs"));
config.SetValueForKey(FromObject(true), new NSString("allowUniversalAccessFromFileURLs"));
WebView = new WKWebView(CGRect.Empty, config);
WebView.Layer.RemoveAllAnimations();
WebView.UIDelegate = this;
this.View = WebView;
}
2018/06/14