gpt4 book ai didi

angularjs - ng-bind-html - 如何在新窗口中打开链接?

转载 作者:行者123 更新时间:2023-12-01 09:56:37 34 4
gpt4 key购买 nike

我正在使用 ng-bind-html 在我的网站上放置一些 HTML 内容。问题是如果内容有链接,点击时链接会在同一个窗口中打开。如何让它在新窗口中打开?

<div ng-bind-html="currentElement.content"></div>

最佳答案

currentElement.content 中包含的链接应具有属性 target='_blank'

<a href="open/me/in/new/window" target="_blank">MyLink</a>

如果 html 内容来自外部来源,您可以添加一个过滤器来解析 html 内容并将目标属性添加到链接

这是一个草图:

return angular.element(htmlContent).find('a').attr('target', '_blank');

更多细节

<!DOCTYPE html>
<html>

<head>
<script data-require="jquery@*" data-semver="2.1.1" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script data-require="angular-sanitize@*" data-semver="1.2.13" src="http://code.angularjs.org/1.2.13/angular-sanitize.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>

<body ng-app="test" ng-controller="HomeCtrl">
<h1>Test </h1>
<div ng-bind-html="myHtml | addTargetBlank"></div>
</body>

</html>

//script.js

angular.module('test', ['ngSanitize'])
.filter('addTargetBlank', function(){
return function(x) {
var tree = angular.element('<div>'+x+'</div>');//defensively wrap in a div to avoid 'invalid html' exception
tree.find('a').attr('target', '_blank'); //manipulate the parse tree
return angular.element('<div>').append(tree).html(); //trick to have a string representation
}
})

.controller('HomeCtrl', function($scope){
$scope.myHtml = 'test html content 1 <a href="#">click here</a>, test html content 2 <a href="#">click here</a>, test html content 3 <a href="#">click here</a>';
})
;

http://plnkr.co/edit/tpl:JHcBgtJ75fVaqFYQlE4a

关于angularjs - ng-bind-html - 如何在新窗口中打开链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25303615/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com