-1

我有一个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+ 版本上测试。科尔多瓦 7.0.0 版

我试过什么?

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

有任何想法吗 ?

4

1 回答 1

-1

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

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

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

于 2020-06-17T13:35:25.687 回答