避免onresize和orientation更改两个火

时间:2017-04-18 13:53:04

标签: javascript

在我现有的应用程序中,我正在处理两个事件,一个用于移动的方向更改和桌面的onresize。不幸的是,这两件事都起火了。

每当设备方向发生任何变化或浏览器调整大小时,我都会尝试仅触发一个功能。我想要类似下面给出的例子。或者建议我在这里缺少的任何东西。

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

})();

JSBIN

1 个答案:

答案 0 :(得分:2)

GetEvent是一个函数......

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

})();

addEventListener需要一个字符串,因此您需要创建一个字符串。 Shortified:

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

这会使您的代码正常工作,但 在调整大小时触发设备方向。所以你可能想要这个:

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