Jquery: как предотвратить добавление префикса к адресу внутри тега `<a>`

0

У меня есть тег HTML <a>:

<a id="ext_link" href="www.google.com">GOOGLE HOME</a>

И я использую JQUERY, чтобы открыть ссылку в новом окне. JQUERY выглядит следующим образом:

$(document).ready(function(){
    $("#ext_link").click(function(e){
        e.preventDefault();
        window.open($(this).attr("href"));
    });
});

Когда я использую <a id="ext_link" href="http"//www.google.com">GOOGLE HOME</a> он отлично работает, но когда я использую <a id="ext_link" href="www.google.com">GOOGLE HOME</a> открывается новое окно, и адресная панель содержит http://localhost/app/www.google.com который является неправильным адресом, очевидно...

Как предотвратить автоматическое добавление http://localhost/app/ в начале.

  • 4
    Вы должны предоставить http:// (или какой-либо другой протокол), иначе он будет интерпретирован как относительная ссылка.
  • 0
    при указании URL в href вы должны указать полный URL, включая http https
Показать ещё 2 комментария

2 ответа

0

Проверьте, не содержит ли href http://и добавляет его так:

$(document).ready(function(){
    $("#ext_link").click(function(e){
        e.preventDefault();
        var url = $(this).attr("href");
        if(!/^https?:\/\//.test(url)){
            url = "http://" + url;
        }
        window.open(url);
    });
});

Вы можете добавить больше протоколов, но https?:// должно быть достаточно. Или вы можете просто использовать // поскольку многие современные браузеры используют его и получают соответствующий протокол.

0

Вы можете использовать регулярное выражение для проверки, если ваш href начинается с http:// или https://, если нет, то добавьте http://:

$(document).ready(function(){
    $("#ext_link").click(function(e){
        e.preventDefault();
        var url = $(this).attr("href");
        if(!/^(http|https):\/\//.test(url)){
            url = "http://" + url;
        }
        window.open(url);
    });
});
  • 0
    А как насчет ссылок, которые уже имеют http:// и получают http://http://www.google.com ?
  • 0
    или ссылки, которые https:// или какой-либо другой протокол

Ещё вопросы

Сообщество Overcoder
Наверх
Меню