Проблема безопасности IE11 при тестировании внешних ссылок на RegEx - PullRequest
1 голос
/ 12 апреля 2019

Я использую следующий код 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...