Cordova ios 应用程序 - 由于弹出窗口阻止程序而无法打开链接
Cordova ios app - Not able to open links due to pop up blocker
我有一个 cordova 应用程序,它根据一些版本匹配逻辑从服务器下载一个 angularjs 应用程序(比如'MyAngularApp')。这个“MyAngular”应用程序位于一个压缩文件夹中,我的 cordova 应用程序将其解压缩并存储在移动设备上的固定位置。
成功下载并解压缩“MyAngularApp”后,我启动“MyAngularApp/index.html”使用 file://path_to_angularjs_application_in_device/MyAngularApp/index.html
从设备上的持久位置
现在,我面临的问题是,当用户在 iOS 上单击“MyAngularApp”中的 link 时,弹出窗口拦截器会阻止要打开的页面。在“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”代码中进行更改。我只能修改我自己的 cordova 应用程序,它下载了这个'MyAngularApp'。
此问题仅在 iOS 中发生。这在 Android.
上非常有效
在 iOS 版本 12+ 上测试。科尔多瓦版本 7.0.0
我尝试了什么?
- 前往
Settings
→Safari
→Block Pop-ups
→ Disable
(没用。新的window还是打不开)
- 安装 cordova InAppBrowser 插件并分配
window.open = cordova.InAppBrowser.open
(没有用,因为这里的问题是如果代码在加载我的 cordova 应用程序之前是适用的。一旦'MyAngularApp' 加载然后上下文改变,这段代码不再在上下文中)。
有什么想法吗?
我自己解决了这个问题。这是解决我的问题的方法,以防有人仍在寻找答案。
因为,在上面解释的场景中,嵌入式 AngularJs 应用程序无法访问 cordova 库。它是在旅途中下载的,然后在 cordova webview 中浏览,这阻止了打开新 window.
所需的 cordova 帮助
我在 index.html
所在的文件夹中手动添加了 'cordova.js'
文件,它解决了问题。
我有一个 cordova 应用程序,它根据一些版本匹配逻辑从服务器下载一个 angularjs 应用程序(比如'MyAngularApp')。这个“MyAngular”应用程序位于一个压缩文件夹中,我的 cordova 应用程序将其解压缩并存储在移动设备上的固定位置。
成功下载并解压缩“MyAngularApp”后,我启动“MyAngularApp/index.html”使用 file://path_to_angularjs_application_in_device/MyAngularApp/index.html
从设备上的持久位置现在,我面临的问题是,当用户在 iOS 上单击“MyAngularApp”中的 link 时,弹出窗口拦截器会阻止要打开的页面。在“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”代码中进行更改。我只能修改我自己的 cordova 应用程序,它下载了这个'MyAngularApp'。
此问题仅在 iOS 中发生。这在 Android.
上非常有效
在 iOS 版本 12+ 上测试。科尔多瓦版本 7.0.0
我尝试了什么?
- 前往
Settings
→Safari
→Block Pop-ups
→Disable
(没用。新的window还是打不开) - 安装 cordova InAppBrowser 插件并分配
window.open = cordova.InAppBrowser.open
(没有用,因为这里的问题是如果代码在加载我的 cordova 应用程序之前是适用的。一旦'MyAngularApp' 加载然后上下文改变,这段代码不再在上下文中)。
有什么想法吗?
我自己解决了这个问题。这是解决我的问题的方法,以防有人仍在寻找答案。
因为,在上面解释的场景中,嵌入式 AngularJs 应用程序无法访问 cordova 库。它是在旅途中下载的,然后在 cordova webview 中浏览,这阻止了打开新 window.
所需的 cordova 帮助我在 index.html
所在的文件夹中手动添加了 'cordova.js'
文件,它解决了问题。