【问题标题】:Link with target="_blank" does not open in new tab与 target="_blank" 的链接不会在新选项卡中打开
【发布时间】:2021-08-30 07:10:25
【问题描述】:

我有一个与 AngularJS 结合的 ASP.NET 页面。我有一些链接。所有链接都具有target="_blank" 属性。此外,<body> 标签还有一个ng-app 属性。

<body ng-app="MyApp">
  @Html.ActionLink("SomeLink", "SomeAction", "SomeController", null, new { target = "_blank" })
  <a href="https://www.google.com" target="_blank">Google</a>
  ...
</body>

让我感到困惑的是,第一个(“内部”)链接是在新选项卡中打开的,而第二个(“外部”)链接是在当前选项卡中打开的(Chrome 和 Firefox 的行为都是这样的)。我想这是 AngularJS 代码中的东西,但不知道。

我还有另一个页面,其中只有 ng-app 不同:ng-app="MyAnotherApp"。这个按预期工作 - 所有链接都在新标签中打开。

感谢您的建议。

更新

链接在两个页面中均等呈现:

<a href="/SomeApp/SomeController/SomeAction" target="_blank">SomeLink</a>
<a href="https://www.google.com" target="_blank">Google</a>

尽管如此,这两个链接的打开方式不同。

网络应用程序的哪个部分决定打开新标签页?浏览器和脚本还是服务器?我在考虑 AngularJS 中是否有任何机制可以影响链接是否在新/当前选项卡中打开 - 不同的ng-app 让我想到了这个想法。

【问题讨论】:

  • 如果它在另一个 ng-app 中运行良好,那么您的示例中没有传达的这两个链接之间肯定存在差异

标签: asp.net angularjs


【解决方案1】:

经过几个小时的战斗,我找到了带有这段代码的this 站点:

angular.module('stopEvents', [])
.directive('stopEvent', function () {
    return {
      restrict: 'A',
      link: function (scope, element, attr) {
        element.bind(attr.stopEvent, function (e) {
          e.stopPropagation();
        });
      }
    };
 });

这让我在我们的解决方案中找到了这段代码:

MyApp.directive("a", ["$window", function ($window) {
    "use strict";
    return {
        restrict: "E",
        link: function (scope, element) {
            element.click(function () {
                if (element.attr("href") && element.attr("href").indexOf("http") === 0) {
                    $window.location.href = element.attr("href");
                    return false;
                } else {
                    return true;
                }
            });
        }
    };
}]);

每当点击页面中带有&lt;body ng-app="MyApp"&gt; 的任何链接时,它都会查看href 属性,如果地址以http(s)(外部链接)开头,则默认行为(打开新标签)被取消并当前窗口被“重定向”到该地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2021-11-06
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多