window.webkit.messageHandlers is null on ios 15



window.webkit.messageHandlers在ios 15上给出null,但当我设置config.limitsNavigationsToAppBoundDomains = true;正常工作。

但我不想将我的WkWebView限制在某些域。

代码-


let config = WKWebViewConfiguration()
config.preferences.javaScriptEnabled = true
let userContentController = WKUserContentController()
userContentController.add(WKSMH, name: "print")
userContentController.add(WKSMH, name: "push-subscribe")
userContentController.add(WKSMH, name: "push-permission-request")
userContentController.add(WKSMH, name: "push-permission-state")
userContentController.add(WKSMH, name: "setUserAttribute")
config.userContentController = userContentController
if #available(iOS 14, *) {
config.limitsNavigationsToAppBoundDomains = true;
}
config.preferences.javaScriptCanOpenWindowsAutomatically = true
config.allowsInlineMediaPlayback = true
config.preferences.setValue(true, forKey: "standalone")

let webView = WKWebView(frame: calcWebviewFrame(webviewView: container, toolbarView: nil), configuration: config)

除了使用config.limitsNavigationsToAppBoundDomains = true之外,还有其他方法可以使用messageHandlers吗?

答案似乎在这篇webkit文章中。

如果您在项目的Info.plist文件中定义了WKAppBoundDomains键,那么除非该标志设置为true,否则应用程序中的所有WKWebView都将禁用某些功能。

WKAppBoundDomains键添加到Info.plist后,所有应用程序中的WKWebView实例默认为一种模式,其中JavaScript注入、自定义样式表、cookie操作,以及拒绝使用消息处理程序。要重新访问这些APIWKWebView可以在其WKWebView配置,如下图所示:

webViewConfiguration.limitsNavigationsToAppBoundDomains=是;

设置此标志向WebKit指示WKWebView将仅导航到应用程序绑定域

因此,如果您不想设置该标志,请尝试从Info.plist文件中删除WKAppBoundDomains密钥。

相关内容

  • 没有找到相关文章