2016-04-25 25 views
9

私はPolymer 1.0を使用していますが、ChromeのボタンをクリックしたときにMouseEventが生成されます。このMouseEventオブジェクトには、クリックされたボタンに対する親要素の順序付き配列であるpathプロパティがあります。 Firefox & Safariでは、プロパティを持たないclickが生成されます。私に同じ情報を与えるclickオブジェクトの同等のプロパティはありますか?Firefox&SafariでMouseEvent.pathと同等

答えて

24

それは利用できませんが、あなたは本当にこのプロパティを持ちたい場合、あなたはそのようなイベントオブジェクトのネイティブプロトタイプを拡張することができます:私はあなただったら、私はいないだろうしかし

if (!("path" in Event.prototype)) 
Object.defineProperty(Event.prototype, "path", { 
    get: function() { 
    var path = []; 
    var currentElem = this.target; 
    while (currentElem) { 
     path.push(currentElem); 
     currentElem = currentElem.parentElement; 
    } 
    if (path.indexOf(window) === -1 && path.indexOf(document) === -1) 
     path.push(document); 
    if (path.indexOf(window) === -1) 
     path.push(window); 
    return path; 
    } 
}); 

プロトタイプを拡張する - 私は代わりに上記のような関数を作成するだろう。

また、これらのタイプのイベントのみをカバーする場合は、Event.prototypeをMouseEvent.prototypeに変更します。

+0

狼狽します。正確には私が探していた答えではありませんが、私の問題を完全に解決します。 – wogsland

+0

好奇心から、@ wogsland、どのような答え、または答えのタイプは、あなたが望んでいたのですか? –

+3

名前が私がまだ推測していなかったFirefoxに作成されたオブジェクトに同等のプロパティがあると思いました。 – wogsland

関連する問題