首页 > 解决方案 > 带有 wkwebview 插件的 Cordova ios - window.open(url, "_system") 不起作用

问题描述

我无法在系统浏览器上打开外部链接。

Cordova 版本 9.0.0 (cordova-lib@9.0.1)

活动插件:

"cordova-ios": "^5.1.1",
"cordova-plugin-keyboard": "1.2.0",
"cordova-plugin-splashscreen": "^5.0.3",
"cordova-plugin-wkwebview-engine": "^1.2.1"

我在config.xml上值得注意的几行

    <access origin="*" />
    <allow-navigation href="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />

    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="KeyboardDisplayRequiresUserAction" value="false" />
    <preference name="BackupWebStorage" value="local"/>

我试过:

window.open(url, "_self")
window.open(url, "_blank")
window.open(url, "_system")

但是唯一在控制台中起作用并返回某些内容的函数是带有“_self”参数的函数。我尝试过使用 HTML 标签:

<a href="http://url" target="_system">foo</a>

但它也不起作用。

试图找出问题的根源,在我看来,在 ios 的 WebKit WebView 上实现 wkwebview 插件的某个地方存在错误,可能与 Apple 最近为避免部署基于 UIWebView 的应用程序所做的更改有关和 ios sdk <13 在 App Store 上

标签: cordovaionic-frameworkcordova-pluginswkwebviewinappbrowser

解决方案


我花了几个小时试图让它工作。我找到了解决 @zestia/cordova-plugin-wkwebview-engine-windowopen 插件问题的方法。

使用以下命令添加到您的项目中:

科尔多瓦插件添加@zestia/cordova-plugin-wkwebview-engine-windowopen


推荐阅读