我正在尝试使用this website中的颜色滑块,这里是source code。以下代码的作用如下:line 134
if (e.preventDefault) e.preventDefault();
我知道preventDefault()
的作用,但为什么要检查preventDefault()
然后preventDefault
?为什么需要preventDefault()
?
此外,之前的行检查是否:
if (target !== this)
需要什么?
答案 0 :(得分:2)
仅适用于跨浏览器支持。 IE 8或者不支持preventDefault
,他们使用returnValue
。
//check preventDefault function is exists in event handler 'e'
if (e.preventDefault)
// if browser support preventDefault, call preventDefault();
e.preventDefault();
修改强>
if (target !== this)
在此代码中,target
是点击的对象,可以指向div#sliders
和子元素div#silders
(R,G,B,H,S,L滑块)。并this
指向div#sliders
。
所以代码意味着"如果点击的对象不是div#sliders"对于RGB,HSL滑块正常工作
编辑2:
滑块移动(拖动)完全存在 e.preventDefault()
。
例如,如果在拖动时光标滑出并且没有e.preventDefault()
,则此功能将无法正常工作。
答案 1 :(得分:0)
跨浏览器支持,特别是older versions of IE。它需要在调用函数之前检查函数是否存在以防止错误。
答案 2 :(得分:0)
在if子句中没有括号。因此,这不是函数调用,而只是检查是否存在这样的方法。因此,他们只检查方法是否存在,如果存在,则称之为。
至于目标,他们首先检查哪个元素获得此事件。如果它是当前滑块,则忽略该事件。