繁体   English   中英

试图了解网站上的一些js代码

[英]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;
    }

这条线是做什么用的?

  1. e.returnValue = false; 设置函数参数的属性returnValue。 return false; 方法返回值为“ false”的函数。

  2. 我的猜测是这样的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

谢谢

  1. 完全没有必要。

  2. 确保tgt始终是ElementNode ,即使事件在包含的文本节点上触发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM