javascript - 为什么在 Chrome 上 id = 'OnClick' 时以下嵌入的 "pattern"不起作用?

标签 javascript html google-chrome

这可能是我忽略的简单问题,但我的 google-fu 没有找到任何可以解释原因的东西。以下面的代码片段为例(暂时忽略嵌入式 js 通常被认为是不好的做法):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html> 
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>
    </title>
</head>
<body> 
    <form action="">
      <div>
        <input type="text" id="pattern" value="foobar">
        <input type="button" value="Alert" OnClick="alert(pattern.value);">
      </div>  
    </form>
</body> 
</html>

以上将在 IE8 和 Firefox 3 中打印警告消息“foobar”,但 Chrome 将打印“undefined”。将 pattern 更改为类似 pattern_ 的内容将按预期为所有三种浏览器打印“foobar”。

pattern 是保留字还是用于内置 js 库之一的名称?这在 Chrome 下不起作用的原因是什么?

最佳答案

因为在内部提到的浏览器将 DOM 元素作为对象附加到全局命名空间 (window)。因此,具有 id="xyz" 的对象也可以作为 window.xyz 甚至 xyz 来寻址。我想 Chrome 不会这样做。

同时检查 my SO-question关于这个,尤其是选择的答案。

[edit] 评论后:确实与 Chrome (webkit) 相关,可能与我发现的有关 here .另见 quirksmode (在页面中搜索“模式”,它在 HTML5 中看起来像 patterninput 的一个属性,所以我可以想象它会干扰具有相同名称的 id)

关于javascript - 为什么在 Chrome 上 id = 'OnClick' 时以下嵌入的 "pattern"不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354395/

相关文章:

javascript - 在解析中创建或更新对象

javascript - 包含的功能同步运行

Javascript - onchange 图像更改

javascript - 无法使用 JSON.parse 解析字符串数组

javascript - 无需加载页面即可交换内部图库和 HTML

api - SoundCloud API v3 Stream 在 Chrome 中不起作用

javascript - 动态添加和填充选择框

html - 最大高度属性使图像在 chrome 中不成比例?

javascript - 阻止 Chrome 调试器在恢复调试器时重新加载页面

css - 谷歌地图在 Chrome 上缺少一排图 block