【问题标题】:How to open $state,go() in new tab如何在新标签中打开 $state,go()
【发布时间】:2017-07-26 02:22:11
【问题描述】:

我正在尝试在 newtab 中打开一个状态,但无法实现。我正在使用 $state,go 函数这样做。

我也尝试了以下代码,它成功并在新标签中打开了我的网址,但浏览器阻止在新标签中打开新网址。

   openurlnw = $state.href('home.forward',{"url":$scope.platforms[0].url,"name":$scope.platforms[0].name,"dish_name":$scope.userSearchedDish});
   window.open(openurlnw,'_blank');

我想在新标签页中打开我的状态而不让浏览器阻止它。

【问题讨论】:

  • 您的浏览器在阻止请求时是否收到错误消息?
  • 没有错误,它只是显示浏览器阻止该站点打开新的弹出窗口
  • 试试<a ng-href="{{ $state.href(...) }}" target="_blank">。浏览器不会阻止此操作,如果您希望抓取此 URL,也会以这种方式发生。
  • 我必须在 JS 部分本身上实现它。

标签: javascript jquery angularjs angular-ui-router url-routing


【解决方案1】:

您必须在构造 url 时使用absolute 选项,然后只需使用$window.open

替换:

openurlnw = $state.href('home.forward',{"url":$scope.platforms[0].url,"name":$scope.platforms[0].name,"dish_name":$scope.userSearchedDish});

与:

openurlnw = $state.href('home.forward',{"url":$scope.platforms[0].url,"name":$scope.platforms[0].name,"dish_name":$scope.userSearchedDish}, {absolute:true});

然后:

$window.open(openurlnw,'_blank');

【讨论】:

  • 这仍然不起作用.. 相同的错误浏览器阻止此站点打开新的弹出窗口
  • 其实这是所有浏览器的功能。具体来说,为了避免打开多个弹出窗口,可能是在一个循环中。您应该仅在用户操作后打开弹出窗口,它不会被阻止。
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 2021-01-24
  • 2011-12-16
  • 2019-08-17
相关资源
最近更新 更多