标签为: "javascript" 的文章

onbeforeunload与a标签在IE中的冲突bug

onbeforeunload 是window的一个事件,目前Firefox,IE都支持,主要用来提示用户是否真的要离开该页面,通常在一些比较重要的数据提交之前,防止用户误操作导致数据丢失。典型的应用如gmail中,在写邮件的时候,如果刷新页面或者关闭页面,会出现提示。

但是在IE下点击一些a标签时,也会触发onbeforeunload事件。并且href中写javascript:void(0)也不行,而在Firefox中不会出现类似的情况。于是查资料对onbeforeunload事件重新认识了一下:

a标签触发事件的顺序

onclick、onbeforeunload跟href三者之间的先后运行关系是这样的:onclick > onbeforeunload > href,知道了这个道理,我们就可以通过一些方法阻止onbeforeunload。另外在IE浏览器中,假如href为#,那么也不会触发onbeforeunload事件。
阅读更多…

2010年6月29日

IE onchange事件触发bug?

今天遇到了IE一个onchange事件的bug,此bug存在于IE所有的版本(6,7,8)不知道是不是bug,还是IE故意这样设计的?姑且不做评价,我们来看看IE onchange事件的重现过程:

给input等控件添加onchange事件,例如input的checkbox(radio等),在IE下点击选中,并没有触发onchange事件,而需要再次失去焦点(点击页面的任何地方)的时候才可以触发onchange事件,而在Firefox下是点击选中checkbox既可以触发onchange事件的~

bug重现代码

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>IE onchange event bug</title></head>
<body>
<input type="checkbox" value="1" onchange="alert(this.value);" id="demo1"/>
<label for="demo1">demo1</label>
<input type="checkbox" value="2" onchange="alert(this.value);" id="demo2"/>
<label for="demo2">demo2</label>
</body></html>

解决方法

  1. 在jQuery1.4.2中绑定change事件是完全可以解决的,而在jQuery1.3.2中绑定change事件是不行的,我们可以通过click事件来绑定
  2. 如果不怕麻烦也不介意绑定两次事件,可以使用IE自带的onpropertychange事件绑定change事件,断桥残雪测试是可以的,不过这样子在IE下就绑定了两次change事件,不推荐这个方法,如果是checkbox,radio等还是使用click事件来处理吧
2010年5月24日

javascript在光标位置插入内容

之前我写过一篇文章是通过javascript获取光标的位置——javascript获取光标位置以及设置光标位置。由于产品需要在留言板的光标处上插入表情,这样就用到了javascript在光标位置插入内容的功能了~其实原理很简单,IE下可以通过document.selection.createRange();来实现,而Firefox(火狐)浏览器则需要首先获取光标位置,然后对value进行字符串截取处理。不多说了~直接上我写的一个jQuery在光标位置插入内容插件吧~

jQuery在光标位置插入内容插件代码

阅读更多…

2010年5月13日

通过javascript实现整站黑白效果

前天是哀悼日,急急忙忙的写了一篇关于通过CSS使网站实现黑白效果的文章(悼念地震,网站变灰CSS代码),可是这个方法使用的是IE的滤镜,具有一定的局限性。今天在网上看到有人推荐的一个不错的方法,试了一下,效果还是可以的,可以自定义让网页的某一部分变成灰度颜色(黑白),演示效果:http://james.padolsey.com/demos/grayscale/。并且支持Firefox,chrome,IE6+。

使用方法:

  1. 首先在网页中引入grayscale.js文件。
  2. 执行grayscale函数即可。
grayscale(document.body);  //整站变成黑白效果
grayscale(getElementById(el));//部分变黑白效果
2010年4月22日

简单代码实现checkbox全选

在前端开发中经常遇到checkbox的选择全部和取消全选的功能,前几天有个同事问我这个问题,我使用了如下的代码实现了checkbox全选的:

function checkall(obj,name) {
     var boxs = document.getElementsByName(name);
     for(var i=boxs.length;i--;){
             boxs[i].checked = obj.checked;
     }
 }

使用方法:

<input type="checkbox" onclick="checkall(this,'del[]');"/>全选/全不选
2010年3月22日

jQuery插件–wBox发布

经过大约一周的时间,wBox终于跟大家见面啦,这是断桥残雪写的第一个jQuery插件,开发时间比较急促,所以有不足之处希望大家指出。

wBox——轻量级的弹出窗口jQuery插件,基于jQuery1.4开发,主要实现弹出框的效果,并且加入了很多有趣的功能,比如可img灯箱效果,callback函数,显示隐藏层,Ajax页面,iframe嵌入页面……

  1. 背景透明度可以根据实际情况进行调节,甚至不设置背景
  2. 可以根据需要添加wBox标题
  3. 支持设置窗口位置,默认为在中心显示
  4. 支持callback函数
  5. 支持html内容自定义
  6. img灯箱看图功能
  7. 支持在wBox显示#ID的内容
  8. 支持Ajax页面内容
  9. 支持设置背景,不设置背景
  10. 支持wBox拖拽功能
  11. ESC键,或者在背景上双击即可关闭wBox
  12. .wBoxClose的内容click可以关闭wBox,无论是组装的html,还是隐藏的html,甚至于iframe的内容中的.wBoxClose

下面简单介绍下wBox的使用方法:

最简单的使用方法

  1. 首先下载wBox文件,然后将wBox中的
  2. 引入wbox.js文件
  3. 引入wbox.css文件
  4. 注意:wBox源代码文件夹中的图片要跟js,css放在相同的目录下,loading.gif要跟你页面放在同一个目录

html代码如下:

<a href="#nosee" class='wBox'>这是一个隐藏wBox</a>
<div id="nosee" style="display:none">这里是个隐藏的id为nosee的DIV</div>
<a href='http://www.js8.in/wbox/001.jpg' class='wBox'>这是一个image wBox</a>

js代码如下:

$(".wBox").wBox();

这样就建立了一个最简单的wBox.

阅读更多…

2010年3月8日