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();