0
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;
};

1つのjsファイルから上記のコードを見ました

質問:

1.

            e.returnValue = false;
            return false;

すでにこの行があるので: e.returnValue = false;,なぜこの行をここに置く必要があるのですか: return false;?

2.

    if (tgt.nodeType !== 1) {
        tgt = tgt.parentNode;
    }

この行は何のためですか?

4

3 に答える 3

0

質問1についてはよくわかりませんが、質問2についてはある程度の見解があります。

「nodeType」はノードの「整数」値を表し、「p、div」などの要素

ノード タイプ 1「this is text」はノード タイプ「3」を持ちます。

コード:

            if ( tgt.nodeType !== 1 ) {
            tgt = tgt.parentNode; 
            }

コーダーは、「p、div」タグのような「要素」でイベントを処理したいと考えています。

例: 次の html コードがあるとします。

            <p>Text in p</p>

したがって、「p」内のテキスト「Text in p」で何らかのイベントが発生した場合、コーダーはイベントのターゲット要素を「Text in p」内のテキストではなく「p」として取得したいと考えています。ここで、テキスト ノード「DOMCharacterDataModified」のイベントを考えてみます。このイベントが発生すると、ターゲット要素は「Text in p」になるはずですが、コーダーはターゲット要素を「p」タグにしたいと考えています。

繰り返しますが、これは私の見解であり、質問に対する具体的な答えかもしれません

あなたが読みたいかもしれない1つの便利なリンク

https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType

ありがとう

于 2013-06-29T09:18:41.780 に答える
0
  1. まったく必要ありません。

  2. 含まれているテキスト ノードでイベントが発生した場合でも、tgt常に であることを確認してください。ElementNode

于 2013-06-29T09:25:12.867 に答える