У меня есть тег 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/
в начале.
Проверьте, не содержит ли 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?://
должно быть достаточно. Или вы можете просто использовать //
поскольку многие современные браузеры используют его и получают соответствующий протокол.
Вы можете использовать регулярное выражение для проверки, если ваш 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);
});
});
http://
и получают http://http://www.google.com
?
https://
или какой-либо другой протокол
http://
(или какой-либо другой протокол), иначе он будет интерпретирован как относительная ссылка.http
https