Firefox链接到JavaScript函数时,如果不打算打开新窗口,则会打开一个新窗口。

4

我遇到一个问题,当我在Firefox中有这个HTML时,它会打开一个新窗口。

<a style="float:right;" 
href='javascript:window.location.href="#";'onClick="javascript:addNewRecord();">
New Record</a>

我尝试过self.location、window.location、#body和#h1作为href。

最初我的代码是这样的,但在火狐浏览器中它什么也没做,只是打开了一个新窗口,而没有执行我的函数。这段代码在谷歌浏览器中完美运行。

<a style="float:right;" href="javascript:addNewRecord();">New Record</a>

请展示您的addNewRecord()函数。我相信问题就隐藏在那里。 附注:您不需要为onclick事件添加javascript“协议”。它们仅适用于javascript,没有其他用途 :) - Anpher
4个回答

10

最常用的内联方式是

<a style="float:right;" href="#"
onClick="addNewRecord(); return false">New Record</a>

或者更好的是:

<a style="float:right;" href="#"
onClick="return addNewRecord()">New Record</a>

在函数结尾处,addNewRecord返回false。


更好的方式是

window.onload=function() {
  document.getElementById("addLink").onclick=addNewRecord;
}
function addNewRecord() {
  ...
  return false;
}

加号

<style>
#addLink { float:right }
</style>

并且

<a href="#" id="addLink">New Record</a>

由于在无法跳转的链接上滥用HREF以获得指针是不被支持的,因此您可以考虑使用带有onclick和cursor:pointer的。但需要更多的努力来使这样的元素对屏幕阅读器等设备可访问。


href="#" 会破坏长页面的用户界面流程,因为它会将浏览器视图跳回页面顶部。 - Typel
@jbalyo 不会的 - 返回false或使用preventDefault可以阻止它发生。 - mplungjan
我使用 href="javascript:void(0);" 来避免“流”问题。 - Hobbes
如果JS关闭,那也会出现错误。 - mplungjan

4

尝试:

onClick="addNewRecord();return false"

3

你的代码行为完全取决于addNewRecord()函数的操作(包括返回值)。

如果没有看到函数内部的内容,很难说清楚,但我想里面可能会发生一些事情。

请注意,你在href =“”部分放置的内容可能不会影响你看到的行为。


0

试试这个

<a onclick="javascript:addNewRecord();">New Record</a> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接