Discuz教程网

仅Firefox中链接A无法实现模拟点击以触发其默认行为

[复制链接]
authicon dly 发表于 2011-9-16 08:17:12 | 显示全部楼层 |阅读模式
而标准的事件触发可以使用dispatchEvent方法。但现在FF5无法触发了A的默认行为了。如下
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Firefox5链接A无法实现模拟点击bug</title>
  6. </head>
  7. <body>
  8. <a id="a1" href="http://mail.sina.com.cn">新浪邮箱</a>
  9. </body>
  10. <script type="text/javascript">
  11. function dispatch(el, type){
  12. try{
  13. var evt = document.createEvent('Event');
  14. evt.initEvent(type,true,true);
  15. el.dispatchEvent(evt);
  16. }catch(e){alert(e)};
  17. }
  18. var a1 = document.getElementById('a1');
  19. dispatch(a1, 'click');
  20. </script>
  21. </html>
复制代码

链接A,使用dispatchEvent模拟点击。测试在IE9/Safari/Chrome/Opera中均跳到了mail.sina.com.cn。唯独Firefox5没有跳过去。
由于Firefox5中给所有元素都添加了click方法(Firefox3没有),因此用click方法测试下
  1. <a id="a1" href="http://mail.sina.com.cn">新浪邮箱</a>
  2. <script>
  3. var a1 = document.getElementById('a1');
  4. a1.click();
  5. </script>
复制代码

测试还是没有跳到mail.sina.com.cn。
可见 Firefox中两种方式都不能使其触发链接A的默认行为。可能是Firefox安全机制禁止了客户端程序员模拟A跳转,呃..
注:貘用FF3测试效果同FF5。感谢..



上一篇:读jQuery之十一 添加事件核心方法
下一篇:js中将HTMLCollection/NodeList/伪数组转换成数组的代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 09:00

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表