菜鸟教程小白 发表于 2022-12-12 11:54:55

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


                                            <p><p>我在我的 cordova 应用程序中遇到了一些 inAppBrowser 行为的问题。代码如下:</p>

<pre><code>var codePass = fooCode;
var executeScriptFunc = function(event) {
ref.executeScript({
    code: codePass
}, function (value) {});
ref.removeEventListener(&#39;loadstop&#39;, executeScriptFunc);
};

var ref = cordova.InAppBrowser.open(fooObject.link, &#34;_blank&#34;, &#34;location=yes,enableViewportScale=yes&#34;);
ref.addEventListener(&#39;loadstop&#39;, executeScriptFunc)
</code></pre>

<p>这里的奇怪之处在于代码在每次模拟时都能完美运行。它打开浏览器并执行脚本没问题。但是当我在我的实际 iPhone 设备上试用它时,它并不总是有效。该脚本可能每隔一段时间执行一次。但它从未如此一致。</p>

<p>模拟器和 iPhone 都使用 iOS 9.3.4。有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果 inAppBrowser 中的站点碰巧通过 HTTPS 提供服务,如果站点使用 <code>Content-Security-Policy</code> HTTP,则 <code>executeScript()</code> 的回调将不起作用响应 header 不包含 <code>default-src</code> 指令的 <code>gap:</code> 或 <code>gap-iab:</code> 方案。这些是必需的,因为 <a href="https://issues.apache.org/jira/browse/CB-9445?focusedCommentId=14705853&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14705853" rel="noreferrer noopener nofollow">execution of the callback function on iOS relies on an iframe that gets added to the page</a> .</p>

<p>您可以通过为 inAppBrowser 打开 Safari 的 Web Inspector 来检查这是否是问题的根本原因——它有一个单独的 Web Inspector 实例,独立于打开它的父应用程序——并在控制台。请注意,您应该在运行 <code>executeScript()</code> 之前打开控制台,否则您可能不会收到错误消息。</p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - iOS上Cordova inAppBrowser中executeScript的执行不一致,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39090441/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39090441/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - iOS上Cordova inAppBrowser中executeScript的执行不一致