[英]trying to understand some js codes from a site
Ev.DOMit = function (e) {
e = e ? e : window.event; // e IS passed when using attachEvent though ...
if (!e.target) {
e.target = e.srcElement;
}
if (!e.preventDefault) {
e.preventDefault = function () {
e.returnValue = false;
return false;
};
}
return e;
};
Ev.getTarget = function (e) {
e = Ev.DOMit(e);
var tgt = e.target;
if (tgt.nodeType !== 1) {
tgt = tgt.parentNode;
}
return tgt;
};
我从一个js文件中看到了上面的代码
问题:
1。
e.returnValue = false;
return false;
因为我们已经有了这一行: e.returnValue = false;
,为什么我们需要在这行: return false;
?
2。
if (tgt.nodeType !== 1) {
tgt = tgt.parentNode;
}
这条线是做什么用的?
e.returnValue = false;
设置函数参数的属性returnValue。 return false;
方法返回值为“ false”的函数。
我的猜测是这样的tgt
: //www.w3schools.com/dom/dom_nodetype.asp-该函数将除ELEMENT_NODE以外的任何节点的tgt
(返回值)设置为parentNode
我不确定问题1,但对问题2有一些看法。
“ nodeType”代表节点的“整数”值,如“ p,div”之类的元素
节点类型为1“这是文本”,节点类型为“ 3”。
码:
if ( tgt.nodeType !== 1 ) {
tgt = tgt.parentNode;
}
我猜编码人员想处理“ p”,“ div”标记之类的“ element”事件。
示例:假设我们有以下html代码
<p>Text in p</p>
因此,如果某个事件发生在“ p”内部的文本“ p中的文本”中,那么编码人员也希望获取该事件的目标元素为“ p”,而不是其内部的文本“ p中的文本”。 现在考虑一个文本节点“ DOMCharacterDataModified”的事件,当该事件触发时,目标元素应为“ p中的文本”,但我们的编码人员希望目标元素为“ p”标记。
再次,这是我的观点,可能是对问题的具体答案
您可能想阅读的一个有用链接
https://developer.mozilla.org/zh-CN/docs/Web/API/Node.nodeType
谢谢
完全没有必要。
确保tgt
始终是ElementNode
,即使事件在包含的文本节点上触发。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.