【问题标题】:javascript new window cancel original href and targetjavascript新窗口取消原来的href和target
【发布时间】:2014-02-19 10:53:55
【问题描述】:

如果禁用 JavaScript,我的锚标记会在新的空白窗口中打开

<a target="_blank" onclick="newWindow(this)" href="http://www.google.co.uk">Google</a>

这是我的外部 javascript,它打开新窗口,然后取消原来的 href 和 target 触发。

function newWindow(element) {

var newWin = window.open(element.href, windowName, "top=0, left=0, height=800,width=700,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no"); 


return [element.href='Javascript: void()', element.target='_self'];
}

这对于 1 次点击可以正常工作,我的问题是如果用户再次点击链接,那么 href 看起来像

<a href="Javascript: void();">

所以链接不起作用!

我做错了什么?

如何编码,以便在弹出窗口打开后取消原始的 href 和 target? 而且链接可以点击多次?

谢谢

【问题讨论】:

  • 只需将其设为&lt;a target="_blank" onclick="newWindow(this); return false;" href="http://www.google.co.uk"&gt;Google&lt;/a&gt;,而无需在函数中使用return [element.href='Javascript: void()', element.target='_self'];
  • 感谢@nord_ua - 将 return false 移动到锚点会阻止 href 和 target 触发,奇怪的是它在外部文件中不起作用。
  • “在外部文件中不起作用”是什么意思?
  • 如果我在外部 javascript 中返回 false 并且在 newWindow() 函数结束时 target="_blank" 仍然会触发...请参阅下面的 kraftner 响应

标签: javascript


【解决方案1】:

这是完美的解决方案:http://jsfiddle.net/tceAX/

<a target="_blank" onclick="newWindow(this); return false;" href="http://www.google.co.uk">Google</a>

Javascript:

function newWindow(element) {
  var newWin = window.open(element.href, 'window-name', "top=0, left=0, height=800,width=700,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no");
}

【讨论】:

    【解决方案2】:

    您正在替换链接目标 onClick 所以只需替换

    return [element.href='Javascript: void()', element.target='_self'];
    

    return false
    

    【讨论】:

    • 试过了,新的浏览器标签仍然打开(target="_blank" 仍然触发)。
    【解决方案3】:

    在您的 return 语句中,您正在设置 element.href 属性。

    element.href='Javascript: void()'
    

    所以对于第一次点击它会起作用,因为元素包含原始值。但是第二次点击时,已经替换了 href 值。

    【讨论】:

    • 这个我知道,我要问的是怎么做才不会发生!
    • 您可以尝试在标签的 onClick 属性中返回 false。 onclick="newWindow(this); return false;".
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多