|
- 以下是一个完整且高效的 JavaScript 代码示例,用于监听浏览器窗口大小的变化
- ```javascript
- // 定义一个变量来保存窗口大小改变的回调函数
- let resizeCallback;
- // 创建一个函数来处理窗口大小改变事件
- function handleResize() {
- // 检查回调函数是否存在并且是一个函数
- if (typeof resizeCallback === 'function') {
- // 调用回调函数,并传入当前窗口的宽度和高度作为参数
- resizeCallback(window.innerWidth, window.innerHeight);
- }
- }
- // 创建一个函数来添加或更新窗口大小改变的回调函数
- function addResizeListener(callback) {
- // 将回调函数赋值给 resizeCallback 变量
- resizeCallback = callback;
- // 使用 addEventListener 方法来监听窗口大小改变事件
- window.addEventListener('resize', handleResize);
- }
- // 创建一个函数来移除窗口大小改变的回调函数
- function removeResizeListener() {
- // 将 resizeCallback 变量设置为 null
- resizeCallback = null;
- // 使用 removeEventListener 方法来移除窗口大小改变事件的监听
- window.removeEventListener('resize', handleResize);
- }
- ```
- 使用示例:
- ```javascript
- // 定义一个回调函数来处理窗口大小改变事件
- function handleWindowResize(width, height) {
- console.log('窗口大小改变了:', width, height);
- }
- // 添加窗口大小改变的监听器,并传入回调函数
- addResizeListener(handleWindowResize);
- // 移除窗口大小改变的监听器
- removeResizeListener();
- ```
- 在上面的示例中,我们定义了一个 `addResizeListener` 函数来添加窗口大小改变的监听器,并传入一个回调函数作为参数。当窗口大小改变时,回调函数将被调用,并传入当前窗口的宽度和高度作为参数。我们还提供了一个 `removeResizeListener` 函数来移除窗口大小改变的监听器。
- 请注意,这个代码示例使用了 `window.innerWidth` 和 `window.innerHeight` 属性来获取窗口的宽度和高度。这些属性返回的是窗口的内部宽度和高度,不包括滚动条和边框的宽度和高度。如果你需要考虑滚动条和边框的宽度和高度,可以使用 `window.outerWidth` 和 `window.outerHeight` 属性。
复制代码
|
|