Cordova ios 应用程序 - 由于弹出窗口阻止程序而无法打开链接

Posted

技术标签:

【中文标题】Cordova ios 应用程序 - 由于弹出窗口阻止程序而无法打开链接【英文标题】:Cordova ios app - Not able to open links due to pop up blocker 【发布时间】:2019-10-12 23:29:46 【问题描述】:

我有一个 cordova 应用程序,它根据一些版本匹配逻辑从服务器下载一个 angularjs 应用程序(比如“MyAngularApp”)。这个“MyAngular”应用程序位于一个压缩文件夹中,我的 cordova 应用程序将其解压缩并存储在移动设备上的永久位置。

MyAngularApp”成功下载并解压后,我使用 file://path_to_angularjs_application_in_device 从设备上的持久位置启动“MyAngularApp/index.html” /MyAngularApp/index.html

现在,我面临的问题是,当用户在 ios 上单击“MyAngularApp”中的链接时,popupblocker 会阻止页面打开。 'MyAngularApp' 中编写的用于打开页面的代码是

        function openUrlInNewTab(url, params, isExternal) 
                    if (params) 
                        url += '#' + params;
                    
                    var windowName = url.startsWith('mailto') ? '_self' : '_blank';
                    $window.open(url, windowName);
        

我知道我们是否可以在上面进行更改以修改代码并将 _blank 替换为 _system,理论上它应该可以工作,但问题是我无法在“MyAngularApp”代码中进行更改.

我尝试从 Safari 设置中关闭 popupblocker 设置,但没有帮助。这里要考虑的一点是我无法在“MyAngularApp”代码中进行更改。我只能修改我自己的下载此“MyAngularApp”的科尔多瓦应用程序。

此问题仅在 iOS 中发生。这在 android 上完美运行。在 iOS 版本 12+ 上测试。 Cordova 7.0.0 版

我尝试了什么?

    转到Settings Safari Block Pop-ups Disable(无效。新窗口仍然有效未开放) 安装cordova InAppBrowser 插件并分配window.open = cordova.InAppBrowser.open(不起作用,因为这里的问题是如果代码在我的cordova 应用程序加载之前适用。一旦'MyAngularApp' 加载然后上下文更改,并且这段代码不再在上下文中)。

有什么想法吗?

【问题讨论】:

嘿,你解决过这个问题吗?我有完全相同的问题 嘿@Smithy,感谢您的提醒。我已经发布了答案。希望对您有所帮助。 【参考方案1】:

我自己解决了这个问题。这是解决我的问题的方法,以防有人仍在寻找答案。

因为,在上述场景中,嵌入式 AngularJs 应用程序无法访问 cordova 库。它是在旅途中下载的,然后在cordova webview中浏览,这阻止了打开新窗口所需的cordova帮助。

我将'cordova.js' 文件手动包含在我的index.html 所在的文件夹中,它解决了问题。

【讨论】:

以上是关于Cordova ios 应用程序 - 由于弹出窗口阻止程序而无法打开链接的主要内容,如果未能解决你的问题,请参考以下文章

Ionic/Cordova Web App - 启动时出现 index.html 错误

在 Android 上的 Cordova 应用程序中的弹出窗口后面模糊

更改 Cordova Geolocation iOS 的显示名称

iOS:应用内购买提醒视图/弹出窗口

Cordova - IOS - 有没有办法直接打开 WIFI 设置或移动数据设置?

Cordova/iOS:如何关闭使用 InAppBrowser 打开的本机浏览器窗口?