Javascript Cordova ios应用程序-由于弹出窗口阻止程序,无法打开链接
我有一个cordova应用程序,它根据一些版本匹配逻辑从服务器下载angularjs应用程序(比如“MyAngularApp”)。这个“MyAngular”应用程序位于一个压缩文件夹中,我的cordova应用程序将其解压缩并存储在移动设备上的一个永久位置 成功下载并解压缩“MyAngularApp”后,我使用从设备上的持久位置启动“MyAngularApp/index.html”file://path_to_angularjs_application_in_device/MyAngularApp/index.html 现在,我面临的问题是,当用户在iOS上点击“MyAngularApp”中的链接时,PopupLocker会阻止页面打开。“MyAngularApp”中用于打开页面的代码是Javascript Cordova ios应用程序-由于弹出窗口阻止程序,无法打开链接,javascript,ios,cordova,cordova-plugins,popup-blocker,Javascript,Ios,Cordova,Cordova Plugins,Popup Blocker,我有一个cordova应用程序,它根据一些版本匹配逻辑从服务器下载angularjs应用程序(比如“MyAngularApp”)。这个“MyAngular”应用程序位于一个压缩文件夹中,我的cordova应用程序将其解压缩并存储在移动设备上的一个永久位置 成功下载并解压缩“MyAngularApp”后,我使用从设备上的持久位置启动“MyAngularApp/index.html”file://path_to_angularjs_application_in_device/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设置中关闭PopubLocker设置,但没有帮助。这里要考虑的是,我不能在MyangurAPP代码中做出改变。我只能修改我自己的cordova应用程序,下载这个“MyAngularApp”
此问题仅在iOS中发生。这在Android上非常有效。在iOS版本12+上测试。Cordova 7.0.0版 我尝试了什么?
设置→Safari
→阻止弹出窗口
→禁用
(不起作用。新窗口仍未打开)
window.open=cordova.InAppBrowser.open
(不起作用,因为这里的问题是,这段代码在我的cordova应用程序加载之前是适用的。一旦“MyAngularApp”加载,则上下文会发生变化,并且这段代码不再在上下文中)有什么想法吗?我自己能解决这个问题。以下是解决我问题的方法,以防有人仍在寻找答案 因为,在上面解释的场景中,嵌入式AngularJs应用程序无法访问cordova库。它是在移动中下载的,然后在cordova webview中浏览,这阻止了cordova打开新窗口所需的协助
我手动将
'cordova.js'
文件包含在我的index.html
所在的文件夹中,它解决了这个问题。嘿,你解决过这个问题吗?我有完全相同的问题Hey@Smithy,谢谢提醒。我已经贴出了答案。希望这对你有帮助。