href javascript target onclick 执行顺序 浏览器兼容问题

Posted by bower on January 05, 2012

see url 分享给你的朋友->bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark

iqopzion 在修改别人代码的时候发现了如下代码

binaire opties sites <a href=”javascript: dosomething();” > </a>

see url

click here 在chrome 中会执行dosomething(),没有任何问题,

http://web-impressions.net/fister/166 在IE中会打开一个路径为javascript: dosomething();新窗口并报错

http://flywind.com.br/bakester/1565 显然 这不是return false一类的问题

click 经过测试 我总结一下 href  javascript target onclick 执行顺序 浏览器兼容问题

http://brander.fi/?macriot=cherche-femme-pour-mariage-tunisienne&8ff=c0 <a onclick=”doclick();”  target=”_blank”  href=”javascript: dosomething();” > </a>

http://milehiproperty.com/?ki0oss=How-to-use-the-internet-to-make-money-pinterest&eb4=5f 在我测试的所有浏览器中 onclick 总是优先执行

http://www.newlycorporate.com/famirenid/1284 在chrome safari中, 如果href 中是javascript:语句 target 就被忽略

在ie firefox中, 先执行target 然后执行href , 换句话说 href 中的javascript 是基于 target的 context

就变成了 target.href

在本例中 就是在_blank窗口中执行 dosomething() 函数,新窗口是空窗口当然不会有这个函数的定义 所以会报错

流程是    先执行onclick 然后打开target 然后在target中执行dosomething()

用iframe的情况很明显
<script>
function did(){
	alert('current page');
}
function click(){
	 alert('click');

}
</script>
<a target="newframe" onclick="click();"  href="javascript: did();">点我1</a>

<iframe id="newframe" name="newframe" src="test.html"></iframe>

 

以上代码在chrome, safari中 target 被忽略 先执行

alert('click')
然后
alert('current page');

在IE, firefox中 情况不一样

先执行

alert('click') 然后会执行newframe中的did()函数
所以target很重要 而且不可以在href中更改target 的值因为target会先于href执行
完全可以在onclick中控制 target 和href  因为onclick 是最优先执行的

回到最开始的问题
<a href="javascript: dosomething();" > </a>
根据表现看,这个link的target 是_blank 一类的新窗口, 但是并没有发现target="_blank"的代码
这可能是最吭爹的
原来是切页面的同学 为了让每个a 都在新窗口打开 加了一个<base target="_blank" />
这样所有的A 的target都会变成 _blank 也就有了我们一开始的部题
解决办法:
很简单了 就是要把target的值改过来,  target="_self" 或去掉base 语句 当然你需要修改其它的a link
其实在这个需求中 是完全没有必要 用href来执行javascript的 onclick 更好


book my forex hyderabad 分享到:人人网开心网腾讯微博新浪微博豆瓣分享腾讯空间百度搜藏腾讯书签

分享给你的朋友->bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Leave a Reply

Your email address will not be published. Required fields are marked *

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word