当前位置: 首页 > 知识库问答 >
问题:

如何在JavaScript中附加窗口调整大小事件侦听器?

丌官丰羽
2023-03-14

我正在制作一个用于分发的JS/PHP插件。我希望它像这样容易安装:

<HTML>
<HEAD>
<TITLE>Testing my Plugin</TITLE>
<?php
  include 'path/to/myPlugin.php';
  echo getMyPluginHeadContent();
?>
</HEAD>
<BODY>
<?php
  echo getMyPluginContent("Arguments will go here");
?>
</BODY>
</HTML>

但是,我希望这个插件附加一个窗口调整大小侦听器,而不重写window.onresize,以防有任何其他脚本也需要使用该方法。是否有类似document.addeVentListener(“resize”,myResizeMethod,true);的javascript命令?我知道这不是问题,因为这不起作用,而且MDN和W3C对于AddEventListener采用什么参数非常模糊。

我不想要一个回答告诉我使用window.onresize=myresizeMethod ,因为这些插件不友好。

共有1个答案

彭胡媚
2023-03-14

由于您试图在调整窗口大小时调用该函数,因此您将希望将该函数绑定到窗口而不是文档。若要支持低于9的IE版本,您将希望使用attachevent。请注意,attachevent要求您指定on关键字。这里有一个例子:

if(window.attachEvent) {
    window.attachEvent('onresize', function() {
        alert('attachEvent - resize');
    });
}
else if(window.addEventListener) {
    window.addEventListener('resize', function() {
        console.log('addEventListener - resize');
    }, true);
}
else {
    //The browser does not support Javascript event binding
}

同样,您也可以用相同的方法移除事件。使用RemoveEventListener时,请确保您传递的UseCapture值与调用AddEventListener时传递的值相同。这是第三个参数,它是true/false值。

if(window.detachEvent) {
    window.detachEvent('onresize', theFunction);
}
else if(window.removeEventListener) {
    window.removeEventListener('resize', theFunction, true);
}
else {
    //The browser does not support Javascript event binding
}
 类似资料:
  • 问题内容: 如何挂接到浏览器窗口调整大小事件? 有一种jQuery侦听调整大小事件的方法,但我不希望仅出于这一要求就将其引入我的项目中。 问题答案: jQuery只是包装了标准的DOM事件,例如。 jQuery 可以 做一些工作来确保在所有浏览器中一致地触发resize事件,但是我不确定任何浏览器是否有所不同,但是我建议您在Firefox,Safari和IE中进行测试。

  • 问题内容: 我已经在窗口调整大小上注册了一个触发器。我想知道如何触发事件被调用。例如,当隐藏一个div时,我希望调用触发函数。 我发现可以触发该功能,但是还有其他解决方案吗? 问题答案: 在可能的情况下,我更喜欢调用函数而不是调度事件。如果您可以控制要运行的代码,则此方法效果很好,但是如果您不拥有该代码,请参见下文。 在此示例中,您可以在不调度事件的情况下调用该函数。 在现代浏览器中,您可以使用以

  • 问题内容: 我正在使用Java编写一个简单的绘画程序,并且每当调整JFrame组件的大小时,我都希望调用某种方法。但是我找不到像windowResizedListener之类的任何方法或诸如windowResizedEvent之类的事件。我能做什么?! 问题答案: 实现一个具有:

  • 问题内容: 我想基于窗口重新调整大小事件(在加载和动态运行)执行一些任务。 目前,我的DOM如下: 该事件正确触发 如何从此事件对象中检索宽度和高度? 谢谢。 问题答案:

  • 问题内容: 使用Firefox,WebKit和Internet Explorer的窗口调整大小事件的正确(现代)方法是什么? 并且可以打开/关闭两个滚动条吗? 问题答案: jQuery 为此具有内置方法: 对于用户界面的响应起见,你可以考虑使用的setTimeout只有经过数毫秒打电话给你的代码,如下面的例子,启发这样:

  • 我有下面的代码,它设置了一个特定大小的窗口。它还从外部URL加载图像。