Моя панель - это сетка с множеством фрагментов, каждая из которых имеет ссылку на другую страницу.
Каждый раз, когда я нажимаю ссылку, она создает новую вкладку даже для ссылки, которая была открыта ранее.
** Как подавить открытие новых вкладок для ссылок, которые уже открыты в браузере с помощью Angular?
Примечание. Внешние ссылки не должны открываться на вкладке, в которой открыта панель мониторинга **
Я использовал следующий код в файле сценария
$scope.openInNewWindow = function(url, $event) {
$window.open(url);
$event.preventDefault();
}
И я называю это, используя:
<a class="ui-button ui-button-stretch" ng-href="{{link.url}}" ng-click="openInNewWindow(link.url, $event)">
В ванильном HTML, если вы всегда указываете один и тот же target
(не считая "_blank") атрибут для каждой ссылки, которую вы пытаетесь скрыть на одной и той же вкладке, он должен всегда приземляться в одной и той же вкладке/окне (если пользователь не закрыл ее), Это может быть проблематично, если они покинут эту вкладку/окно, а затем нажмите ссылку again--, они могут не заметить, что старая вкладка/окно перезагрузила контент в зависимости от того, как браузер обрабатывает загрузку/фокусировку ссылки.
Этот вопрос в стороне... использование target = "_ blank" или window.open() в скрипте не то, что вы хотите сделать... Вы хотите использовать что-то вроде target = "resource1", target = "resource2" для каждого уникальный URL-адрес, который вы хотите оставить в своей вкладке/окне.
Вы можете использовать это для того, что вы пытаетесь сделать.
С помощью Angular вы, вероятно, захотите использовать директиву... и, возможно, сбросить свой атрибут ng-click. Возможный пример, адаптированный из (условно добавьте target = "_ blank" к ссылкам с Angular JS) через ответ Себастьяна по аналогичной теме:
module.directive('myTarget', function () {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var href = element.href;
if(href == "/resource1.html") { // replace with your conditions to match your urls
element.attr("target", "resource1");
else if( href == "/resource2.html")
element.attr("target", "resource2"); // etc.
}
}
};
});
Применение:
<a href="/resource1.html" my-target>Link</a>