与浏览器相关的事件兼容
1、监听文本框输入
Firefox、Chrome、IE9,IE10 均支持 oninput 事件,此外所有版本的 IE 均支持 onpropertychange 事件。
oninput 事件在用户输入、退格(backspace)、删除(delete)、剪切(ctrl + x)、粘贴(ctrl + v)及鼠标剪切与粘贴时触发(在 IE9 中只在输入、粘贴、鼠标粘贴时触发)。
onpropertychange 事件在用户输入、退格(backspace)、删除(delete)、剪切(ctrl + x)、粘贴(ctrl + v)及鼠标剪切与粘贴时触发(在 IE9 中只在输入、粘贴、鼠标粘贴时触发)(仅 IE 支持)。
backspace、delete 两个按键的 keyCode 分别为 8、46。
oncut 事件在粘贴(ctrl + v)、鼠标粘贴时触发。
Demo Code:
var input = document.getElementById("test"); function fn() { // 你要执行的代码 } if(window.addEventListener) { //先执行W3C input.addEventListener("input", fn, false); } else { input.attachEvent("onpropertychange", fn); } if(window.VBArray && window.addEventListener) { //IE9 input.attachEvent("onkeydown", function() { var key = window.event.keyCode; (key == 8 || key == 46) && fn();//处理回退与删除 }); input.attachEvent("oncut", fn);//处理粘贴 }
来源:http://www.cnblogs.com/rubylouvre/archive/2013/02/17/2914604.html
二、onunload事件
1、IE6,IE7,IE8 中 刷新页面、关闭浏览器之后、页面跳转之后都会执行;
2、IE9 刷新页面 会执行,页面跳转、关闭浏览器不能执行;
3、firefox(包括firefox3.6) 关闭标签之后、页面跳转之后、刷新页面之后能执行,但关闭浏览器不能执行;
4、Safari 刷新页面、页面跳转之后会执行,但关闭浏览器不能执行;
5、Opera、Chrome 任何情况都不执行。
三、onbeforeunload事件
作用:当离开当前页面之前触发。包括(刷新、关闭)
值:
return 【必要】 的值 为你需要告诉用户的提示信息如上面demo的话浏览器的提示是这样(firefox 并不支持文字提醒):
注:除IE之外,其他支持的浏览器,必须有return,且return 不能为空;否则该事件将不生效!另,IE事件处理回调函数内如果有alert,则会被执行,但其他浏览器将忽略它!
值得注意的是,网上流传说 可以通过检查 e.clientX e.clientY 判断 用户是否点击 右上角关闭浏览器的,但是实践发现 只有 IE6,IE7,IE8 能获取得到具体数值,其他浏览器均为 undefined。
1、IE、Chrome、Safari 完美支持
2、Firefox 不支持文字提醒信息
3、Opera 不支持
IE6、IE7 bug:
凡是 <a> 标签 都会触发 onbeforeunload事件 包括 href=”javascript:void(0)” 这种。
在IE6,IE7 下面 点击 里面的 a 标签,蛋疼的事情就发生了。
解决方法:给这 a标签的 父级 添加 onclick=function(){return false} 即可,不过添加了这个之后 要确保 父级里面没有 input type=”checkbox” 的标签,否则会导致其无效不可点击。
补充:
我们知道引起当前页面发生条转主要3类事件:
1、对浏览器窗口的操作,比如关闭浏览器、go home、backward、forward和refresh等;
2、对于网页的Navigatie操作,比如点击链接、在地址栏中执行新的地址、页面表单提交到非当前页面等;
3、脚本代码引起的页面Navigate操作,比如执行navigate、locatoin方法(replace, reload, assign)和修改location属性(href, search)等。
IE bug:
以上的1-2类操作引起onbeforeunload的事件,使用起来基本没有任何的问题,可是执行第3类页面条转操作却有点小问题。就是在上图的窗口出现后,如果点选"OK",确实就OK,页面正确跳转了。可是如果这个时候,我们点选"Cancel",却会出现一个脚本异常。解决方法就是把脚本调用try一下!
第二、三来源:http://www.asheep.cn/skill/onunload.html;http://www.cnblogs.com/birdshome/archive/2005/09/30/OnBeforeUnload.html

浙公网安备 33010602011771号