Как определить, является ли ссылка Mura внешней ссылкой

#jquery #mura

#jquery #mura

Вопрос:

У меня есть всплывающая ссылка, которая определяет, является ли это внешней ссылкой. Всплывающее окно способно правильно определить, существует ли внешняя ссылка.

Веб-сайт использует Mura CMS, пользователи которой использовали функцию в Mura для создания ссылок в Mura (нажмите здесь). Эта проблема возникает у пользователей, создающих ссылки Mura, у которых есть внешние ссылки, и используемая логика не может определить, является ли ссылка внутренней или внешней.

Следующая логика используется для обнаружения внешних ссылок:

 $("a:not('.frontEndToolsModal')").on('click', function(e){
    e.preventDefault();
    var url = $(this).attr('href'),
        host = location.host;

    if (url.indexOf(host) > -1 || url.indexOf('http','https') == -1){
        /* If we find the host name within the URL,
           OR if we do not find http or https, 
           meaning it is a relative internal link.

           The following statements is to not interefere with Mura CMS front end tools
        */

        if(url.indexOf('/admin/?muraAction=cArch.list') == 0){
            var newTab = window.open(url, '_blank');
            newTab.focus();
        }
        else if(url.indexOf('/admin/?muraAction') == 0){
            //do nothing
        }else{
            window.location.href = url;
        }
    }else {

        var m = modal.open({content: "POP UP MESSAGE"});

        if(m == true) {
            return m;
        } 
    }
});
  

Мой вопрос таков: как я могу определить, содержит ли созданная ссылка Mura внутреннюю или внешнюю ссылку?

Комментарии:

1. Имеют ли ссылки, которые пользователи создают в Mura, CSS-класс ‘frontEndToolsModal’? Опубликованный вами код jQuery должен привязываться ко всем ссылкам, кроме тех, которые содержат CSS-класс ‘frontEndToolsModal’.

2. @Miguel-F: На ваш вопрос — нет. Упомянутый вами класс CSS включает в себя инструменты Mura, к которым пользователь имеет доступ, когда он может войти в систему для изменения страниц, добавления страниц и т.д.

3. Таким образом, в этом случае, если тот же jQuery запущен на странице, он должен работать так же, как и другие. Можете ли вы привести пример HTML и ссылки, которые генерируются и не работают с кодом jQuery?

4. @Miguel-F: Проблема, с которой я сталкиваюсь, заключается в том, что у Mura есть функция для создания ссылок, и она распознается как внутренние ссылки. Не уверен почему, но пользователи вставили внутренние ссылки в эти ссылки. И способ получить значение URL-адреса — через m.content (‘body’), которое я не знаю, как получить значение, если всплывающее окно и модальное значение находятся в моем js-файле.

5. Не уверен, что я следую. Не могли бы вы опубликовать примеры кода того, о чем вы говорите?