【发布时间】:2017-08-07 10:57:57
【问题描述】:
我有一个 phonegap 应用程序,它通过 phonegap 开发 iOS 应用程序上的本地服务器完美运行。
具体来说,调用
var ref = cordova.InAppBrowser.open('https://subdomain.domain.com', '_blank', 'location=no');
在开发应用程序中运行良好,但是当推送到 phonegap 构建并通过通过 testflight 安装的应用程序访问时,使用 Hydration 轻松更新,按钮完全没有响应。
我感觉没有加载任何插件,因为状态栏也出现故障。
这里是 config.xml 文件的相关部分:
<plugin name="cordova-plugin-inappbrowser" spec="~1.7.0" />
<plugin name="cordova-plugin-statusbar" />
<plugin name="cordova-plugin-whitelist" spec="1.3.1" />
我知道这样做的不安全性,但是,更改为我尝试访问的网址并不会改变任何内容:
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<allow-intent href="*" />
</platform>
有问题的按钮:
<a href="#" id="signUpButton" class="btn btn-default appButton appAlt"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> OR SIGN UP</a>
与此按钮相关的javascript:
document.addEventListener("deviceready", function(){
deviceReadyDependantFunctions();
initializeApplication();
});
function deviceReadyDependantFunctions(){
alert('initialised!');
$('#signUpButton').unbind().click(function(){
console.log('here');
var ref = cordova.InAppBrowser.open('https://subdomain.domain.com?some=variable', '_blank', 'location=no');
ref.addEventListener('loadstart', function(event) { alert(event.url); });
console.log(ref);
});
}
显然,那里有一堆调试....
“初始化”警报会在所有环境中触发。
event.url 警报会在开发应用程序中触发,但不会在试飞、水合应用程序中触发。
我一直在尽我所能来纠正这个问题......我找到的唯一解决方案是使用简单的href="theUrl.com" 并让系统浏览器加载它。这根本不是解决方案......我需要在应用程序中加载网址。这是一个注册页面,可以从应用程序访问它是必不可少的。
我尝试过的事情:
白名单的每一次渗透,尽管有不同的文档说在应用浏览器中是/不受白名单插件的影响。
使用不同版本的 phonegap (<preference name="phonegap-version" value="cli-6.5.0" />) 无济于事。
检查插件是否存在于 phonegap 构建“插件”选项卡中。他们是。
尝试用 phonegap.js 替换对 cordova.js 的引用。这根本不起作用。
加载js文件的顺序(上面对inappbrowser的调用是在一个单独的js文件中)。没有区别。
我做错了什么?!
还是 TestFlight/Hydrated Application 组合有什么奇怪的地方?
您可以在此处查看我所做的荒谬提交以及完整的代码库:
https://github.com/andycharrington/yfa/commits/master
我们将不胜感激任何建议。
谢谢。
【问题讨论】:
-
抱歉,我还尝试了 cordova.InAppBrowser.open 函数中“_blank”、“_self”、“_system”的所有变体。
-
此外,我已经尝试了内容安全策略的每一个渗透。目前是:
<meta http-equiv="Content-Security-Policy" content="img-src * 'self' data:; default-src * 'self' gap: wss: ws: ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';"> -
您是否尝试过卸载插件然后重新安装它们,有时这确实会有所作为。
标签: ios cordova jquery-mobile phonegap-build inappbrowser