弹出窗口 window link 在 window 以及浏览器选项卡中启动

Popup window link launching in window as well as in the browser tab

我正在使用 Laravel 和 AngularJS 构建网站。 我想要某个 link 在弹出窗口 window 中打开。 javascript代码是

function popitup(url) {
    newwindow=window.open(url,'test','height=400,width=550');
    if (window.focus) {newwindow.focus()}
    return false;
    }

而 link 是

<a ui-sref="test({id:test.id})" class="btn btn-primary fright" onclick="return popitup(this.href)" oncontextmenu="return false;">Resume</a>

当我单击按钮时,弹出窗口工作正常,但 link 也会在我单击它的选项卡中打开,但我不希望它打开。 有办法吗?

    <!DOCTYPE html>
<html>
<body>


<a href="http://google.com" onclick="javascript:void window.open('http://google.com','example','width=700,height=500,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0');return false;">Popup-window</a>


</body>
</html>

尝试使用此代码弹出 window 并将 google.com 更改为您的站点

我猜 ui-sref 也会绑定一个点击事件,并且该事件会先于你触发。

您可以跳过 ui-sref 并将 url 放在数据属性或 onclick 属性中。您可以使用 $state.href() 代替 url。然后问题可能会消失。

编辑

您可以将它绑定到范围函数并跳过所有的点击。像这样:

在控制器中(同时确保首先在控制器中包含 $state):

$scope.popitup = function(stateName, options) {
 var url = $state.href(stateName, options);
 newwindow=window.open(url,'test','height=400,width=550');
 if (window.focus) {newwindow.focus()}
}

并且在 HTML 中,您使用状态名称及其参数调用 popuitup 函数:

<a ng-click="popitup('test', {id:test.id})" 
   class="btn btn-primary fright" oncontextmenu="return false;">Resume</a>

另请参阅 state.href 的文档。