vue 中监听窗口发生变化,触发监听事件, window.onresize && window.addEventListener('resize',fn) ,wi...

 1 // 开始这样写,不执行  2 window.onresize = function() {  3 console.log('窗口发生变化')  4 }  5  6  7 // 改为window监听事件  8 window.addEventListener('resize', function() {  9 console.log('窗口发生变化') 10 })

onresize的定义方式html

1、直接在html中定义浏览器

    如<body onresize="doResize()"/>spa

2、直接给onresize赋值scala

    能够给window和body的onresize赋值code

    如window.onresize=function(){},document.body.onresize=function(){}orm

3、使用事件监听htm

    只对window有做用blog

    如window.addEventListener("resize",fn);事件

说明:ip

    一、直接给onresize赋值会覆盖在html中定义。

    二、直接给onresize赋值,window,body只有一个起做用,后定义的会覆盖先定义的

    三、事件监听只对window有效,能够其它方式同时触发。  

 1 1.浏览器尺寸变化响应事件 :  2  3 Js代码 收藏代码  4 window.onresize = function(){....}  5  6  7  获取变动后参数:  8  9 10 11 Js代码 收藏代码 12 // 获取到的是变动后的页面宽度  13 var currentWidth = document.body.clientWidth; 14  这里须要注意的是,onresize响应事件处理中,由于已经刷新页面,因此获取到的页面尺寸参数是变动后的参数。 15 16 17 18 若是须要使用到变动以前的参数,须要建一个全局变量保存以前的参数(而且记得在onresize事件中刷新这个全局变量保存新的参数值)。
 1 2.谷歌浏览器中 window.onresize 事件默认会执行两次(偶尔也会只执行一次,网上大部分说法认为这是Chrome的bug)。  2  3  解决方法:(为resize设置一个延迟)通常来讲推荐新建一个标志位 延时复位控制它不让它本身执行第二次,代码以下:  4  5  6  7 Js代码 收藏代码  8 var firstOnResizeFire = true;//谷歌浏览器onresize事件会执行2次,这里加个标志位控制   9 10 window.onresize = function() 11 { 12 if (firstOnResizeFire) { 13  NfLayout.tabScrollerMenuAdjust(homePageWidth); 14 firstOnResizeFire = false; 15 16 //0.5秒以后将标志位重置(Chrome的window.onresize默认执行两次)  17  setTimeout(function() { 18 firstOnResizeFire = true; 19 }, 500); 20  } 21 22 homePageWidth = document.body.clientWidth; //从新保存一下新宽度  23 } 24 25 26 27 28 例子: 29 30 监听屏幕的改变: 31 32 Html代码 收藏代码 33 <!DOCTYPE html> 34 <html> 35 <head lang="en"> 36 <meta charset="UTF-8"> 37 <title></title> 38 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, width=device-width"> 39 <meta content="telephone=no" name="format-detection"> 40 </head> 41 <body> 42 <label id="show"></label> 43 <script> 44 window.onresize = adjuest; 45  adjuest(); 46  function adjuest(){ 47 var label = document.getElementById("show"); 48 label.innerHTML = "width = "+window.innerWidth+";height="+window.innerHeight; 49  } 50 </script> 51 </body> 52 </html> 

效果:

 

 

 

 1 2 .监听div大小的改变  2  3  4  5 Html代码 收藏代码  6 <!DOCTYPE html>  7 <html>  8 <head lang="en">  9 <meta charset="UTF-8"> 10 <title></title> 11 </head> 12 <body> 13 <div id="show_div" style="background-color: lightblue;width: 100%;height: 300px;"></div> 14 <label id="show"></label> 15 <script> 16 window.onresize = adjuest; 17  adjuest(); 18  function adjuest(){ 19 var label = document.getElementById("show"); 20 var divCon = document.getElementById("show_div"); 21 label.innerHTML = "width = "+divCon.offsetWidth+";height="+divCon.offsetHeight; 22  } 23 </script> 24 </body> 25 </html> 

效果:

相关文章
相关标签/搜索