9
我正在使用Polymer 1.0,並且在Chrome中單擊某個按鈕時會生成一個MouseEvent
。此MouseEvent
對象具有path
屬性,該屬性是單擊按鈕的父元素的有序數組。然而,在Firefox & Safari中,會生成一個click
,該屬性沒有path
屬性。有沒有給我提供相同信息的click
對象的同等屬性?在Firefox和Safari中相當於MouseEvent.path
我正在使用Polymer 1.0,並且在Chrome中單擊某個按鈕時會生成一個MouseEvent
。此MouseEvent
對象具有path
屬性,該屬性是單擊按鈕的父元素的有序數組。然而,在Firefox & Safari中,會生成一個click
,該屬性沒有path
屬性。有沒有給我提供相同信息的click
對象的同等屬性?在Firefox和Safari中相當於MouseEvent.path
這是不可用的,但如果你真的想有這個屬性,那麼你可以擴展Event對象的原始雛形,像這樣:
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如果你只想覆蓋這些類型的事件。
Awesomesauce。不完全是我正在尋找的答案,但完美地解決了我的問題。 – wogsland
出於好奇,@ wogsland,你希望得到什麼答案或類型的答案? –
我認爲在Firefox中創建的對象中有一個等價的屬性,我的名字我還沒有猜到。 – wogsland