HTML5 oninput属性中的JavaScript动作

JavaScript action inside HTML5 oninput attribute?

本文关键字:JavaScript 动作 oninput 属性 HTML5      更新时间:2023-09-26

我一直在学习HTML5我遇到的一个例子使用类型范围的输入元素和输出元素(这个例子目前只适用于Chrome, Safari和Opera)。下面的表单生成一个滑动条,其结果回显到输出元素。

<form>
   <p>
      <input type="range" id="slideValue" value="50" 
          oninput="slideCurrent.value = parseInt (slideValue.value);" />
      <output id="slideCurrent">50</output>
   </p>
   <input type="submit" value="Send">
</form>

我的问题与oninput属性有关。oninput属性包含JavaScript。在html5之前的JavaScript中,我经常看到JavaScript引用this.value。然而,在上面的HTML5示例中,对slideCurrentslideValue的引用(显然不需要使用getElementById)。我相信这是JavaScript的一种新行为方式。

这个新的JavaScript操作方法是否在某处记录?

内联事件处理程序中的代码作用域为元素,就像它在with块中一样。
因此,你可以使用元素的属性作为全局变量。

这是一个鲜为人知的危险功能,在HTML5中并不新鲜。

这是IE引入的一种方法,元素的名称和id是全局作用域中的引用。其他浏览器已经复制了它,但它被认为是不好的使用。Mozilla抛出一个警告:

元素在全局作用域中被ID/NAME引用。使用war3标准. getelementbyid()而不是…

你可以在谷歌上找到很多线程。在这里可以找到一篇好文章。在事件处理程序中,可以使用this作为对元素的引用,但输出元素应该由标准dom方法访问。

编辑:哦,该死的,是的,它在规范:http://www.whatwg.org/specs/web-apps/current-work/#dom-window-nameditem。但是有一个大大的红色警告:

这种情况可能会改变。浏览器厂商正在考虑将这种行为限制为怪癖模式。阅读更多…

参见Mozilla bug 303420和602381