Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';t以下嵌入式';OnClick';id=”时工作;“模式”;在铬上?_Javascript_Html_Google Chrome - Fatal编程技术网

Javascript 为什么';t以下嵌入式';OnClick';id=”时工作;“模式”;在铬上?

Javascript 为什么';t以下嵌入式';OnClick';id=”时工作;“模式”;在铬上?,javascript,html,google-chrome,Javascript,Html,Google Chrome,这可能是我忽略的一件简单的事情,但我的google fu没有显示任何可以解释原因的东西。以以下代码段为例(暂时忽略嵌入式js通常被认为是不好的做法): 上面将在IE8和Firefox3中打印警告消息“foobar”,但Chrome将打印“undefined”。将pattern更改为类似于pattern\uu的其他内容将按预期为所有三种浏览器打印“foobar” pattern是一个保留字还是一个内置js库的名称?这在Chrome下不起作用的原因是什么?因为在内部提到的浏览器将DOM元素作为对

这可能是我忽略的一件简单的事情,但我的google fu没有显示任何可以解释原因的东西。以以下代码段为例(暂时忽略嵌入式js通常被认为是不好的做法):


上面将在IE8和Firefox3中打印警告消息“foobar”,但Chrome将打印“undefined”。将
pattern
更改为类似于
pattern\uu
的其他内容将按预期为所有三种浏览器打印“foobar”


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

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

还要检查这一点,尤其是选定的答案


[编辑]评论后:这确实与Chrome(webkit)有关,可能与我的发现有关。另请参见(在页面中搜索“模式”,它在HTML5中看起来像
模式
输入
的一个属性,因此我可以想象这会干扰具有相同名称的id)

不要使用全局变量按id访问DOM元素。为此,有
文档.getElementById(…)
,甚至更好——几乎在任何js库/框架中都有一个选择器函数(例如jQuery中的
$('yourid')
,Prototype中的
$('yourid')
,等等)。它们保证了跨浏览器支持,而每个浏览器上的全局变量可能会有所不同。

这并不能解释更改id是否有效。好吧,很公平,我只是按照Victor T.所说的去做。ThxYep,很有趣,我找不到关于这个的任何东西。尽管如此,我认为使用全局变量(如代码中显示的OP)是不可取的。@Kooil的解释似乎是最合理的,尽管我将doctype指定为HTML4.01,但为什么浏览器会处于怪癖模式?奇怪的是,它通过了w3验证。如果没有更好的答案,我可能会接受这个答案。@Victor t:我也不知道,但这可能是一个浏览器问题(有足够的问题需要解决@chrome:)。+1作为建议。当然,我会在实际页面中使用
getElement)*
方法。尽管我仍然对我在实验中遇到的这个怪癖感到好奇。
<!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>