TL; DR版本:
Facebook浏览器中的部分JS代码不会在每次重新加载页面时执行 - 仅在多次重新加载后才会执行。
问题:如何让Facebook应用内浏览器在每次加载页面时执行所有JS代码?这实际上应该是正常的行为 - 事实上,其他浏览器(尝试使用Chrome和Safari)会在每次重新加载页面时执行代码。
详细信息:
在我的网站上,我遇到了与用户登录/注销相关的问题。调试过程让我直到我在<head>
的开头放置测试代码,以检查我的cookie是否存在。我遇到的问题只发生在Facebook应用内浏览器中。
所以,我有这个示例代码:
<!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;
重现问题的步骤:
我在Facebook墙上用这个代码分享网址,然后我在iPhone 6s上访问Facebook应用程序并点击链接;它会在应用内浏览器中打开。
现在,此代码应显示一条警告,其中包含cookie或消息,说明没有cookie。但是......根本就没有警报。就像这个alert
部分代码一样。
但是,刷新几次后,警报开始出现。一旦它第一次出现,它就会一直出现在页面的每次重新加载中,直到我点击&#34;返回&#34;按钮。然后,当我再次在墙上,再次点击链接时,整个情况会重复 - 直到我刷新几次才会发出警报。
对我来说,&#34;警告没有显示&#34;基本上意味着&#34;一些javascript没有执行&#34; - 如果我在这里弄错了,请告诉我,可能会在此浏览器中以特定方式处理警报?其他JS(用户界面等)正常工作。
到目前为止调查:
这个问题并没有发生在任何流行的浏览器上;警报每次出现。
另一件事:我杀了Facebook应用程序(双击主页按钮获取打开的应用程序列表,然后杀死Facebook)。然后我重新打开Facebook,再次点击链接并且......警报不会出现。我刷新了几次,最终出现了。
我还在应用设置中清除了浏览器缓存,但这对任何情况都没有影响。