Javascript 什么';我的Galaxy S3上有个砰砰作响的window.page?

Javascript 什么';我的Galaxy S3上有个砰砰作响的window.page?,javascript,android,html,Javascript,Android,Html,某些浏览器是否使用window.page来显示某些内容 我这样问是因为我的网络应用程序在运行安卓4.3的Galaxy S3手机上神秘地失败了。调查显示有什么东西用HTMLBodyElement撞击了我的全局变量page。它在我的Android 4.3虚拟机上运行得很好。这是一个POC: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <script type="t

某些浏览器是否使用
window.page
来显示某些内容

我这样问是因为我的网络应用程序在运行安卓4.3的Galaxy S3手机上神秘地失败了。调查显示有什么东西用
HTMLBodyElement
撞击了我的全局变量
page
。它在我的Android 4.3虚拟机上运行得很好。这是一个POC:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8"/>
    <script type="text/javascript">
      window.page = 0;
      window.addEventListener("load", start, false);
      function start()
      {
          if (isNaN(window.page))
              alert(window.page);
          setTimeout(function(){alert(window.page);}, 5000);
      }
    </script>
  </head>
  <body>
    <table>
      <tr>
        <td>This is some text that is long enough to wrap around.</td>
        <td>This is some text that is long enough to wrap around.</td>
        <td>This is some text that is long enough to wrap around.</td>
      </tr>
    </table>
  </body>
</html>

window.page=0;
window.addEventListener(“加载”,开始,错误);
函数start()
{
if(isNaN(window.page))
警报(window.page);
setTimeout(函数(){alert(window.page);},5000);
}
这是一些足够长的文本,可以环绕。
这是一些足够长的文本,可以环绕。
这是一些足够长的文本,可以环绕。
预期行为:5秒内出现一个消息框,显示
0
(分配给window.page的值)

观察到的行为:5秒内出现一个消息框
[object HTMLBodyElement]

它似乎只在一些非常特殊的情况下重现;例如,如果表格单元格中的文本没有环绕,
window.page
保持为
0
。正如我所说,我只在我的三星Galaxy S3上见过这种情况;我在我的Android 4.2平板电脑或Firefox、Chrome或IE桌面上没有发现任何问题


我只需重命名
页面
即可解决此问题。但我想知道这里发生了什么,以及我的其他全局变量是否会被踩到。

正如RoToRa在评论中指出的,可能有特定于浏览器的全局变量或加载项会干扰您的脚本。最好避免使用它们。但是,如果您想查看手机浏览器中具体发生的情况,请使用此选项列出“窗口”对象的按键:

<script type="text/javascript">
    keyList = Object.keys(window);
    for(var i in keyList) { 
        document.write(keyList [i]+"<br>"); 
    }
</script>

keyList=Object.keys(窗口);
对于(键列表中的变量i){
文件。写入(键列表[i]+“
”; }
只是一个一般性建议:首先避免使用所有全局变量。这将防止任何与第三方脚本和浏览器特定全局变量冲突的副作用。我似乎也有同样的问题。它看起来像是在设定间隔或onResize@RoToRa您至少需要一个全局变量,对吗?用作所有其他内容的命名空间。嗯,我使用了'page'作为根变量:)@DirkBoer您至少应该使用一个不太通用的变量名,例如
dirkBoerPage
。在最初的问题中,根本不需要全局变量——我可以断言,不使用任何全局变量就可以编写JavaScript。