Mam moduł obsługi kliknięć dla określonego linku, wewnątrz którego chcę zrobić coś podobnego do następującego:
window.location = url
Potrzebuję tego, aby faktycznie otworzyć adres URL w nowym oknie, jak mam to zrobić?
Odpowiedzi:
Możesz polubić:
window.open('url', 'window name', 'window settings')
jQuery:
$('a#link_id').click(function(){
window.open('url', 'window name', 'window settings');
return false;
});
Można również ustawić target, aby _blankrzeczywiście.
Oto jak zmusić cel do wnętrza modułu obsługi kliknięcia:
$('a#link_id').click(function() {
$(this).attr('target', '_blank');
});
$(this).attr('target', '_blank'); można było zmienić wiersz na this.target = "_blank";Również, jeśli linki kotwicy na stronie można zmodyfikować tak, aby miały rel="external"atrybuty, można utworzyć globalną procedurę obsługi kliknięcia dla strony z selektorem jQuery a[rel="external"]zamiast posiadania program obsługi kliknięć na link wybrany za pomocąa#link_id
będziesz musiał użyć window.open(url);
źródła:
http://www.htmlcodetutorial.com/linking/linking_famsupp_120.html
http://www.w3schools.com/jsref/met_win_open.asp
Właśnie znalazłem interesujące rozwiązanie tego problemu. Tworzyłem przęsła, które zawierają informacje na podstawie zwrotu z usługi internetowej. Pomyślałem o próbie umieszczenia łącza wokół zakresu, tak aby po kliknięciu „a” uchwyciło kliknięcie.
Ale próbowałem uchwycić kliknięcie rozpiętością ... więc pomyślałem, dlaczego nie zrobić tego, tworząc rozpiętość.
var span = $('<span id="something" data-href="'+url+'" />');
Następnie powiązałem moduł obsługi kliknięć z zakresem, który utworzył łącze na podstawie atrybutu „data-href”:
span.click(function(e) {
e.stopPropagation();
var href = $(this).attr('data-href');
var link = $('<a href="http://' + href + '" />');
link.attr('target', '_blank');
window.open(link.attr('href'));
});
To z powodzeniem umożliwiło mi kliknięcie zakresu i otwarcie nowego okna z odpowiednim adresem URL.
Co jest nie tak <a href="myurl.html" target="_blank">My Link</a>? Nie potrzeba Javascript ...
to rozwiązanie uwzględniło również przypadek, że adres URL jest pusty i wyłączony (szary) pusty link.
$(function() {
changeAnchor();
});
function changeAnchor() {
$("a[name$='aWebsiteUrl']").each(function() { // you can write your selector here
$(this).css("background", "none");
$(this).css("font-weight", "normal");
var url = $(this).attr('href').trim();
if (url == " " || url == "") { //disable empty link
$(this).attr("class", "disabled");
$(this).attr("href", "javascript:void(0)");
} else {
$(this).attr("target", "_blank");// HERE set the non-empty links, open in new window
}
});
}
a.disabled {
text-decoration: none;
pointer-events: none;
cursor: default;
color: grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<a name="aWebsiteUrl" href="http://www.baidu.com" class='#'>[website]</a>
<a name="aWebsiteUrl" href=" " class='#'>[website]</a>
<a name="aWebsiteUrl" href="http://www.alibaba.com" class='#'>[website]</a>
<a name="aWebsiteUrl" href="http://www.qq.com" class='#'>[website]</a>
Pamiętaj, jeśli chcesz wykonywać żądania AJAX wewnątrz funkcji obsługi zdarzenia dla zdarzenia kliknięcia. Z jakiegoś powodu Chrome (i być może inne przeglądarki) nie otworzy nowej karty / okna.
To niezbyt fajna poprawka, ale działa:
CSS:
.new-tab-opener
{
display: none;
}
HTML:
<a data-href="http://www.google.com/" href="javascript:">Click here</a>
<form class="new-tab-opener" method="get" target="_blank"></form>
JavaScript:
$('a').on('click', function (e) {
var f = $('.new-tab-opener');
f.attr('action', $(this).attr('data-href'));
f.submit();
});
Przykład na żywo: http://jsfiddle.net/7eRLb/
Microsoft IE nie obsługuje nazwy jako drugiego argumentu.
window.open('url', 'window name', 'window settings');
Problem w tym window name. To zadziała:
window.open('url', '', 'window settings')
Microsoft dopuszcza tylko następujące argumenty, jeśli w ogóle używa tego argumentu: