为什么检查preventDefault,然后是preventDefault?

时间:2016-01-26 01:28:22

标签: javascript events preventdefault

我正在尝试使用this website中的颜色滑块,这里是source code。以下代码的作用如下:line 134

if (e.preventDefault) e.preventDefault();

我知道preventDefault()的作用,但为什么要检查preventDefault()然后preventDefault?为什么需要preventDefault()

此外,之前的行检查是否:

if (target !== this)

需要什么?

3 个答案:

答案 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子句中没有括号。因此,这不是函数调用,而只是检查是否存在这样的方法。因此,他们只检查方法是否存在,如果存在,则称之为。

至于目标,他们首先检查哪个元素获得此事件。如果它是当前滑块,则忽略该事件。