Facebook应用内浏览器未执行javascript

时间:2018-02-19 09:50:34

标签: javascript ios facebook

TL; DR版本:

Facebook浏览器中的部分JS代码不会在每次重新加载页面时执行 - 仅在多次重新加载后才会执行。

问题:如何让Facebook应用内浏览器在每次加载页面时执行所有JS代码?这实际上应该是正常的行为 - 事实上,其他浏览器(尝试使用Chrome和Safari)会在每次重新加载页面时执行代码。

详细信息:

在我的网站上,我遇到了与用户登录/注销相关的问题。调试过程让我直到我在<head>的开头放置测试代码,以检查我的cookie是否存在。我遇到的问题只发生在Facebook应用内浏览器中。

所以,我有这个示例代码:

&#13;
&#13;
    <!DOCTYPE html>
    <html lang="da">
        <head>
            <script>
                alert(document.cookie.match(/glt_.+?;/) || 'no glt_* cookie!');
            </script>
            <!-- other <script> tags here -->
        </head>

        <body>
        ...
        </body>
    </html>
&#13;
&#13;
&#13;

重现问题的步骤:

我在Facebook墙上用这个代码分享网址,然后我在iPhone 6s上访问Facebook应用程序并点击链接;它会在应用内浏览器中打开。

现在,此代码应显示一条警告,其中包含cookie或消息,说明没有cookie。但是......根本就没有警报。就像这个alert部分代码一样。

但是,刷新几次后,警报开始出现。一旦它第一次出现,它就会一直出现在页面的每次重新加载中,直到我点击&#34;返回&#34;按钮。然后,当我再次在墙上,再次点击链接时,整个情况会重复 - 直到我刷新几次才会发出警报。

对我来说,&#34;警告没有显示&#34;基本上意味着&#34;一些javascript没有执行&#34; - 如果我在这里弄错了,请告诉我,可能会在此浏览器中以特定方式处理警报?其他JS(用户界面等)正常工作。

到目前为止

调查:

这个问题并没有发生在任何流行的浏览器上;警报每次出现。

另一件事:我杀了Facebook应用程序(双击主页按钮获取打开的应用程序列表,然后杀死Facebook)。然后我重新打开Facebook,再次点击链接并且......警报不会出现。我刷新了几次,最终出现了。

我还在应用设置中清除了浏览器缓存,但这对任何情况都没有影响。

0 个答案:

没有答案