如何在新窗口中以及右键单击的新选项卡/窗口中打开链接?

时间:2015-11-13 02:59:49

标签: javascript html

我有一个帮助链接。如果用户点击它,它会打开一个具有固定宽度和高度的新窗口。它运行良好,但是当我右键点击链接时,没有选项可以在新选项卡中打开' (在IE中)或者我可以在新标签页中打开,但是会转到空白页面(chrome)。任何人都可以帮助使这个像链接一样,默认情况下在新窗口(而不是标签)中打开吗?

<html>
    <head>
        <title>
        link
        </title>

        <script type="text/javascript">

        function activateHelpView(helpUri) {
            var WindowId = 'SomeWindowId';
            var helpWindow = window.open(helpUri, WindowId, 'width=400,height=500,menubar=no,status=no,scrollbars=no,titlebar=no,toolbar=no,resizable=yes');
            if (helpWindow) {
                (helpWindow).focus();
            }
        }
        </script>
    </head>

    <body>
        <a id='PortOrderPageLearnMoreLink' href='javascript:' title='Learn more' onclick='activateHelpView("http://stackoverflow.com/")'>Learn more</a>

    </body>
</html>

1 个答案:

答案 0 :(得分:2)

使用真实链接,而不是空javascript:地址。 onclick处理程序可以阻止链接执行“正常”操作,但是您可以使用右键单击来处理。

target=_blank是一个强烈暗示,您希望在新窗口中打开页面,但是否完全尊重 - 以及是否在窗口或标签中 - 是否超出了页面的控制范围。

<script type="text/javascript">
  function activateHelpView(helpUri) {
    var WindowId = 'SomeWindowId';
    var helpWindow = window.open(helpUri, WindowId, 'width=400,height=500,menubar=no,status=no,scrollbars=no,titlebar=no,toolbar=no,resizable=yes');
    if (helpWindow) {
      (helpWindow).focus();
    }
  }
</script>

<a id='PortOrderPageLearnMoreLink' href='http://stackoverflow.com/' title='Learn more' onclick='activateHelpView(this.href); return false;' target='_blank'>Learn more</a>

处理所有这些的更现代的方法 - 特别是如果有多个帮助链接 - 是为所有这些添加一个类,并运行一些JavaScript来依次添加点击处理程序。 HTML保持干净(并且使用真实链接,如果禁用或未加载JavaScript,仍然可以使用)。

var helplinks = document.querySelectorAll('.helplink');

for (var i = 0; i < helplinks.length; ++i) {
  helplinks[i].addEventListener('click', activateHelpView);
}

function activateHelpView(event) {
  event.stopPropagation();     // don't let the click run its course
  event.preventDefault();

  var helpUri = this.href;     // "this" will be the link that was clicked
  var WindowId = 'SomeWindowId';
  var helpWindow = window.open(helpUri, WindowId, 'width=400,height=500,menubar=no,status=no,scrollbars=no,titlebar=no,toolbar=no,resizable=yes');
  if (helpWindow) {
    helpWindow.focus();
  }
}
<a id='PortOrderPageLearnMoreLink' 
   href='http://stackoverflow.com/' title='Learn more' 
   class='helplink' target='_blank'>Learn more</a>

不允许StackOverflow片段使用其中一些功能。可以找到一个工作示例here