2017-04-18 1 views
2

In meiner bestehenden Anwendung handle ich zwei Ereignisse, eine für die Änderung der Ausrichtung für mobile und onresize für Desktop. Leider werden beide Ereignisse in Brand geraten.Vermeiden Sie Onresize und Orientierung ändern beide Feuer

Ich versuche nur eine Funktion auszulösen, wenn sich die Geräteausrichtung ändert oder die Größe des Browsers geändert wird. Ich möchte etwas wie das unten angegebene Beispiel. Oder schlage mir vor, was mir hier fehlt.

(function() { 
    var getEvent = function() { 
    event = window.ondeviceorientation || window.onresize; 
    return event; 
    }; 
    document.addEventListener(getEvent, function() { 
    console.log("Size changed"); 
    }, false); 

})(); 

JSBIN

Antwort

2

GetEvent ist eine Funktion ...

function() { 
var getEvent = function() { 
    event = window.ondeviceorientation ? "deviceorientation" : "resize"; 
    return event; 
}; 
document.addEventListener(getEvent(), function() { //<--- 
    console.log("Size changed"); 
}, false); 

})(); 

Und addEventListener erfordert eine Zeichenfolge, so dass Sie eine Zeichenfolge erstellen müssen. Shortified:

document.addEventListener(window.ondeviceorientation ? "deviceorientation" : "resize", function() { 
    console.log("Size changed"); 
}, false); 

Diese Arbeit Code macht, aber es entweder Feuer auf deviceOrientation oder auf Größe ändern. So können Sie das wünschen:

function callable(){}; 
document.addEventListener("deviceorientation",callable); 
document.addEventListener("resize",callable); 
Verwandte Themen