Ссылка Firefox на функцию JavaScript открывает новое окно, когда оно не предназначено - PullRequest
4 голосов
/ 15 августа 2010

У меня есть проблема, когда, когда у меня есть этот HTML в Firefox, он открывает новое окно

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

Я попытался использовать self.location, window.location, #body и # h1 в качестве href.

Первоначально у меня был код как, но в Firefox, который не делал ничего, кроме открытия нового окна, и не выполнял мою функцию. Код отлично работает в Chrome.

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

Ответы [ 4 ]

10 голосов
/ 15 августа 2010

Канонический встроенный способ -

<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 для ссылки, ведущей в никуда только для того, чтобы получить указатель, вызывает недовольство, вы можете рассмотреть <span> с onclick и cursor: pointer. Требуется больше усилий, чтобы сделать такой элемент доступным, например, для программ чтения с экрана.

4 голосов
/ 15 августа 2010

попробуй:

onClick="addNewRecord();return false"
3 голосов
/ 15 августа 2010

То, как ведет себя ваш код, полностью зависит от того, что делает функция addNewRecord () (включая то, что она возвращает).

Не видя внутри этой функции, трудно сказать, но я бы сказал, что происходитвнутри.

Обратите внимание, что то, что вы помещаете в часть href = "", вероятно, не влияет на поведение, которое вы видите.

0 голосов
/ 15 августа 2010

Попробуйте это

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