Utilizzo Polymer 1.0 e quando viene fatto clic su un pulsante in Chrome viene generato un valore MouseEvent
. Questo oggetto MouseEvent
ha una proprietà path
che è una matrice ordinata di elementi padre per il pulsante su cui si fa clic. In Firefox & Safari, tuttavia, viene generato uno click
che non ha una proprietà path
. Esiste una proprietà equivalente dell'oggetto click
che mi dà le stesse informazioni?MouseEvent.path equivalente in Firefox e Safari
9
A
risposta
24
Non è disponibile, ma se davvero desidera avere questa proprietà, allora si potrebbe estendere il prototipo originario dell'oggetto evento in questo modo:
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;
}
});
Tuttavia, se fossi in te, non lo farei estendere il prototipo - vorrei creare una funzione come menzionato sopra invece.
Inoltre, cambierei Event.prototype in MouseEvent.prototype se si desidera coprire solo quei tipi di eventi.
Awesomesauce. Non è esattamente la risposta che stavo cercando, ma risolve perfettamente il mio problema. – wogsland
Per curiosità, @wogsland, quale risposta o tipo di risposta, speravi? –
Ho pensato che ci sarebbe stata una proprietà equivalente nell'oggetto creato in Firefox il cui nome non avevo ancora indovinato. – wogsland