Я использую следующий код JQuery, чтобы убедиться, что внешние ссылки открываются в новой вкладке на моем веб-сайте:
$('a:not(.magnific-video)').each(function () {
var extLink = new RegExp('/' + window.location.host + '/');
if (!extLink.test(this.href)) { // IE11 throws the security problem here
$(this).click(function (event) {
event.preventDefault();
event.stopPropagation();
window.open(this.href, '_blank');
});
}
});
Это прекрасно работает во всех браузерах, кроме Internet Explorer. Как ни странно, этот скрипт запускается на каждой странице моего сайта, но ошибка возникает только на странице контактов (в IE11). Когда я загружаю страницу контактов, я получаю ошибку SCRIPT14: A security problem occured.
в консоли, которая указывает на строку, которую я прокомментировал в приведенном выше коде (строка с .test()
), и ни один из других javascript на странице не работает. Все страницы на моем сайте имеют внешние ссылки (в нижнем колонтитуле и в других местах), поэтому единственное различие между другими страницами и страницей контактов заключается в том, что он загружает карты Google через их API для отображения карты на странице (возможно, в этом есть какое-то занятие). это единственное заметное отличие по сравнению с другими страницами).
Что я ищу
Исправлена проблема безопасности в Internet Explorer, так что все остальные сценарии на странице контактов работают так же, как и в других браузерах.
EDIT / UPDATE
Я заменил свой скрипт выше на следующий, который нашел на GitHub. Кажется, что он делает то же самое, и у меня больше не возникает проблема безопасности в IE11 ... не решение вышеописанного скрипта не работает, поэтому я не ставлю его в качестве ответа.
$('a:not(.magnific-video)')
.filter('[href^="http"], [href^="//"]')
.not('[href*="' + window.location.host + '"]')
.attr('rel', 'noopener noreferrer')
.attr('target', '_blank');