• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:54:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在我的 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。有什么想法吗?



Best Answer-推荐答案


如果 inAppBrowser 中的站点碰巧通过 HTTPS 提供服务,如果站点使用 Content-Security-Policy HTTP,则 executeScript() 的回调将不起作用响应 header 不包含 default-src 指令的 gap:gap-iab: 方案。这些是必需的,因为 execution of the callback function on iOS relies on an iframe that gets added to the page .

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

关于javascript - iOS上Cordova inAppBrowser中executeScript的执行不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39090441/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap