我有一些链接应该在同一个窗口或标签中打开。 为了实现这一点,我给了窗口一个名称,如下例代码:
<a href="#" onClick='window.open("http://somesite.com", "mywindow", "");'>link 1</a>
<a href="#" onClick='window.open("http://someothersite.com", "mywindow", "");'>link 2</a>
这在Internet Explorer中运行正常,但firefox总是会打开一个新的选项卡/窗口。 有任何想法吗?
答案 0 :(得分:14)
实际上,由gabriel1836链接的W3Schools文档只是功能的非常简短的摘要。
奇怪的是,mozilla自己的开发人员参考 CONTRADITCS 这个逻辑。
var WindowObjectReference = window.open(strUrl, strWindowName [, strWindowFeatures]);
如果是带有名称的窗口 strWindowName 已经存在,那么, 而不是打开一个新窗口, strUrl 被加载到现有的 窗口。在这种情况下返回值 该方法是现有的窗口 并忽略 strWindowFeatures 。 为 strUrl 提供空字符串 是一种获得对开放的引用的方法 窗口的名称没有改变 窗口的位置。如果你想 打开每个电话的新窗口 window.open(),你应该使用 特殊值 _blank for 的 strWindowName 强>
但是,该页面还指出可以安装许多可以更改此行为的扩展。
因此,mozilla为自己的浏览器定位的文档是错误,或者您的测试系统有些奇怪:)
此外,您当前的A-Href表示法对网络不利,并会激怒用户。
<a href="http://google.com"
onclick="window.open( this.href, 'windowName' ); return false" >
Text
</a>
实质上是一种更好的方式。
许多人会本能地“中间点击”他们想要在新标签中手动打开的链接,并且让你唯一的href为“#”会让他们感到堕落。
“#”技巧是一个冗余且有点糟糕的技巧,可以阻止页面无意中进入某个地方,但这只是因为对如何使用onclick
缺乏了解
如果您从点击事件返回FALSE
,则会取消链接默认操作(默认操作是当前页面导航)
甚至比这个表示法更好的是使用像这样的非侵入式JavaScript:
<a href="google.com" rel="external" >Text</a>
以后
<script type="text/javascript">
jQuery(function($){
$("a[rel*=external]").click(function(){
window.open(this.href, 'newWindowName' );
return false;
});
});
</script>
答案 1 :(得分:8)
Javascript中的window.open()函数专门用于打开一个新窗口,请参阅:w3schools documentation。实际上听起来IE正在以非标准的方式处理事情(这并不奇怪)。
如果您想使用Javascript将现有位置重新定位到新页面,您应该查看location.replace()函数。
一般来说,我建议您为Firefox开发,然后修复IE。 Firefox不仅提供了更好的开发工具,而且其W3C标准的实现更加正确。
答案 2 :(得分:6)
默认情况下,如果在window.open参数上省略了维度,FF会使用新选项卡。您需要为新的浏览器窗口添加维度。
试试这个:
<a href="#" onClick='window.open("http://somesite.com", "mywindow", "width=700", "height=500");'>link 1</a>
答案 3 :(得分:2)
为什么不使用像
这样的纯HTML <a href="http://www.google.com" target="my_window_tab_frame_or_iframe">Link</a>
而不是使用JavaScript?