JS中如何在关闭窗口时不弹出对话框?

JavaScript016

JS中如何在关闭窗口时不弹出对话框?,第1张

昨天常收到网友发来的链接,再带上一个吸引人的标题,引得很大一部份人去点击,点开才发现上当了,原来是愚人节,页面的原理是用网页js循环不停地弹出对话框,所弹出的对话框只有确定和关闭按扭,但不论点击哪个按扭下一个同样的对话框就跟着弹出来,在对话框没被关闭的情况下是关不了网页的。而弹出对话框会永远不停地弹出,还提示一些气人的话,什么赶紧关机呀,还讲老和尚与小和尚的故事,真是呕人哟。看到也没得办法,一般上网者会不停地点击关闭,但那没用,程序会不停地弹出,就算关到停电也关不完的,不过还好,这里有几种方法都可以有效地将它关闭。直接重新启动电脑吧,这种方式最简单也最笨。你要真是这样做,那你也就被愚了。别人正乐呵地笑呢。打开任务管理器ctrl+alt+del键,这样会打开任务管理器,然后选择当前的网页程序,结束任务即可。另一种简单有效的方式就是让弹出对话框停留在激活状态,按着esc

键不放,同时用鼠标点击网页的关闭按扭。你会发现这其中的第三种方式相当有效。

第一种、使用原生javascript的window.open()方法(大部分情况下会被浏览自阻止)

第二种、模拟表单(form)提交,原理是指定表单的action为想要打开的URL地址,target设置为"_blank"

不过模拟表单提交的方法经很多网友反映说也会被阻止

第三种、模拟超链接(<a>)被点击,用jquery的写法如下,注意最后openLink[0]是模拟的原生DOM对象被点击的(使用Jquery对象的话没反应)

var openLink = $("")

openLink.attr('href', 'URL地址')

openLink[0].click()

这种方法个人比较推荐的,因为简单方便

第四种、利用浏览器的冒泡事件(这种方法稍微有点复杂,呵呵)

clickOpenWin: function(f){

var dataKey = "clickOpenWin.dataKey"

var me = $(this)

var A = me.data(dataKey)

var returnData = null

if(!A){

A = $("")

me.data(dataKey, A)

A.click(function(e){

if(returnData){

A.attr("href", returnData)

}else {

A.before(me)

e.stop()

}

})

}

me.mouseover(function(){$(this).before(A).appendTo(A)})

me.mouseout(function(){A.before($(this))})

me.click(function(){

A.attr("href", "#|")

returnData = f.apply(this, arguments)

})

}

1. 首先,说一下最终的效果,是实现用 “A” 包含你要触发弹窗的元素,原来的click事件要返回弹窗的URL 对应这一句 “returnData = f.apply(this, arguments)”

2. 然后就要说到弹窗拦截的策略了,具体我就不说了,反正 策略里是不会拦截 “A” 本身吧

3. 最后就是合成了,用A包含后,因为事件会冒泡,所以利用正常的点击,生成动态的 链接地址 给A,触发A的原始点击事件,就完成了