Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 为什么要检查preventDefault,然后检查preventDefault?_Javascript_Events_Preventdefault - Fatal编程技术网

Javascript 为什么要检查preventDefault,然后检查preventDefault?

Javascript 为什么要检查preventDefault,然后检查preventDefault?,javascript,events,preventdefault,Javascript,Events,Preventdefault,我正在尝试使用中的颜色滑块,下面是。以下代码的作用是什么: 我知道preventDefault()做什么,但为什么要检查preventDefault()然后检查preventDefault?为什么需要preventDefault() 此外,前面的行检查是否: if (target !== this) 这需要什么?特别是跨浏览器支持。在调用该函数之前,它需要检查该函数是否存在以防止出错。仅用于跨浏览器支持。IE 8或更低版本不支持preventDefault,它们使用returnValue //

我正在尝试使用中的颜色滑块,下面是。以下代码的作用是什么:

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

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

if (target !== this)

这需要什么?

特别是跨浏览器支持。在调用该函数之前,它需要检查该函数是否存在以防止出错。

仅用于跨浏览器支持。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)

在此代码中,单击目标对象,该对象可以指向
div#sliders
div#sliders
(R、G、B、H、S、L滑块)的子元素。而
指向
div#滑块

因此,对于RGB,该代码意味着“如果单击的对象不是div#滑块”,HSL滑块工作正常

编辑2:

e.preventDefault()
用于滑块的完美移动(拖动)


例如,如果拖动时光标滑出幻灯片,并且没有
e.preventDefault()
,则此函数将无法正常工作。

在if子句中没有括号。因此,这不是一个函数调用,只是检查是否存在这样的方法。因此,他们只是检查方法是否存在,以及是否存在,然后调用它


对于target,他们首先检查哪个元素得到了这个事件。如果是当前滑块,他们会忽略事件。

因为并非所有引擎都支持它。可能是为了防止在不支持它的旧版本IE中抛出错误。旧IE使用了
window.event.returnValue=false
,如果我没记错的话。preventDefault是防止滑块上鼠标向下移动,对吗?但是mouseDown确实有效。如果没有,颜色就不会改变,对吗?谢谢你的完整答案!它阻止了什么事件?滑块上的鼠标向下移动,但鼠标向下移动确实有效。如果没有,颜色不会改变,对吗?我想,这是为了点击那些指向当前颜色选择的小标记。你是指“R”、“G”、“B”标签吗?如果你能在我得到答案之前回答我在@mikryz评论中写的最后两个问题,我会接受你的答案。谢谢!我写的关于
preventDefault
的另一个问题呢?他写道:“这是为了点击那些小股票”。“小股票”指的是什么?@Horay check edit 2。我希望你能理解我糟糕的英语,当然我能理解我在没有使用
preventDefault()
的情况下尝试了它,效果很好。@Horay是的,它会正常工作。但是当
preventDefault()
不存在时可能会发生这种情况。如果您能在我得到答案之前回答我在@mikryz评论中写的最后两个问题,我将接受您的回答。
//check preventDefault function is exists in event handler 'e'
if (e.preventDefault)

    // if browser support preventDefault, call preventDefault();
    e.preventDefault();