Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS上Cordova inAppBrowser中executeScript的执行不一致_Javascript_Ios_Cordova_Cordova Plugins_Inappbrowser - Fatal编程技术网

Javascript iOS上Cordova inAppBrowser中executeScript的执行不一致

Javascript iOS上Cordova inAppBrowser中executeScript的执行不一致,javascript,ios,cordova,cordova-plugins,inappbrowser,Javascript,Ios,Cordova,Cordova Plugins,Inappbrowser,我的cordova应用程序中出现了一些浏览器错误行为。代码如下: var codePass = fooCode; var executeScriptFunc = function(event) { ref.executeScript({ code: codePass }, function (value) {}); ref.removeEventListener('loadstop', executeScriptFunc); }; var ref = cordova.In

我的cordova应用程序中出现了一些浏览器错误行为。代码如下:

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设备上试用时,它并不总是有效。脚本可能每隔一次执行一次。但它从来都不是那么一致的


emulator和iPhone都使用iOS 9.3.4。有什么想法吗?

如果inAppBrowser中的站点恰好通过HTTPS提供服务,那么如果站点使用的内容安全策略HTTP响应头不包含默认src指令的gap:或gap iab:方案,则executeScript的回调将不起作用。这些都是必要的,因为


您可以通过打开Safari的InApp浏览器Web Inspector来检查这是否是问题的根本原因。它有一个独立的Web Inspector实例,独立于打开它的父应用程序,并在控制台中查找相应的错误消息。请注意,您应该在运行executeScript之前打开控制台,否则您可能不会收到错误消息。

还要确保在轮询期间不会同时触发其他事件处理程序

我有多个民意调查者,他们每秒钟都会开火,这就是我遇到这个问题的时候


在更改轮询时间使它们在不同的时间触发后,问题消失了。

在尝试进一步诊断此问题时,我发现loadstop侦听器也在退出时被触发。这不会发生在模拟器中,只会发生在设备上,同样也只会发生在iOS上,在本例中是9.3.4。loadstart也有类似的行为,虽然exit似乎工作正常。好的,我有一个解决方法,但并不理想。每次我删除cordova插件wkwebview引擎插件时,它似乎都能在iOS设备上运行。考虑到这有助于优化应用程序,这似乎不是一个很好的方案。WKWebView似乎是问题所在,因此可能与和有关。什么是“相应的错误消息”?这是内容安全策略警告吗?