Похоже, что нет надежного способа открыть новую вкладку в Javascript (быстрый поиск показывает, что это может быть сложно), и код кода кажется, что он блокирует открытие новой страницы. Вы можете попробовать, если это работает.
Сначала после этой строки
var href = $(this).attr('href');
добавить еще одну строку с надписью (эта строка получает значение атрибута / свойства target
из тега и считается равной _self
, если она не определена)
var target = $(this).prop('target') || '_self';
Тогда поищите эту строку
$('.site').css('opacity', 0);
Что он делает, так это делает всю страницу практически пустой. Вы можете захотеть что-то с этим сделать, например, обернуть это в оператор if, чтобы оно не выполнялось при target="_blank"
. Быстрый способ исправить это, заменив его на
target === '_blank' || $('.site').css('opacity', 0);
Следующая замена (через несколько строк после предыдущей)
window.location = href;
с
window.open(href, target)
Соответствующий блок должен выглядеть как
load_effect.loader.show();
var href = $(this).attr('href');
var target = $(this).prop('target') || '_self';
target === '_blank' || $('.site').css('opacity', 0);
setTimeout(function() {
window.open(href, target)
}, load_effect.duration);
Это предполагает, что window.open
работает как положено (документация здесь ). Что происходит в коде, так это то, что автор остановил поведение по умолчанию после нажатия на ссылку с
e.preventDefault();
, чтобы позволить некоторой причудливой анимации завершиться, прежде чем браузер продолжит загрузку нужной страницы. Однако, упрощая загрузку страницы с
window.location = href;
игнорирует целевой атрибут / свойство соответствующего тега <a />
.