我在我的cordova应用程序中遇到一些inAppBrowser行为有问题。这是代码:
var codePass = fooCode;
var executeScriptFunc = function(event) {
ref.executeScript({
code: codePass
}, function (value) {});
ref.removeEventListener('loadstop', executeScriptFunc);
};
var ref = cordova.InAppBrowser.open(fooObject.link, "_blank", "location=yes,enableViewportScale=yes");
ref.addEventListener('loadstop', executeScriptFunc)
这里奇怪的是每次模拟时代码都能完美运行。它打开浏览器并执行脚本没问题。但是当我在我的实际iPhone设备上试用它时,它并不总是有效。脚本可能每隔一段时间执行一次。但它永远不会那么一致。
模拟器和iPhone都在使用iOS 9.3.4。有什么想法吗?
答案 0 :(得分:3)
如果inAppBrowser中的网站恰好通过HTTPS提供,如果该网站使用的executeScript()
HTTP响应标头不包含Content-Security-Policy
,则gap:
的回调将无效或gap-iab:
指令的default-src
方案。这些是必需的,因为execution of the callback function on iOS relies on an iframe that gets added to the page。
您可以通过为inAppBrowser打开Safari的Web Inspector来检查这是否是导致问题的根本原因 - 它有一个单独的Web Inspector实例,独立于打开它的父应用程序 - 并查找相应的错误消息控制台。请注意,您应该在executeScript()
运行之前打开控制台,否则您可能不会收到错误消息。
答案 1 :(得分:0)
确保在轮询期间没有其他事件处理程序同时触发。
我有多个轮询器每秒都会触发,这就是我遇到问题的时候。
更改轮询时间后,所有人都在不同的时间点火,问题就消失了。