Saya memiliki penangan klik untuk tautan tertentu, di dalamnya saya ingin melakukan sesuatu yang mirip dengan berikut ini:
window.location = url
Saya memerlukan ini untuk benar-benar membuka url di jendela baru, bagaimana cara melakukannya?
Jawaban:
Anda bisa menyukai:
window.open('url', 'window name', 'window settings')
jQuery:
$('a#link_id').click(function(){
window.open('url', 'window name', 'window settings');
return false;
});
Anda juga dapat menyetel targetke _blanksebenarnya.
Berikut cara memaksa target di dalam handler klik:
$('a#link_id').click(function() {
$(this).attr('target', '_blank');
});
$(this).attr('target', '_blank'); bisa diubah menjadi this.target = "_blank";Juga, jika tautan jangkar pada halaman dapat dimodifikasi untuk memiliki rel="external"atribut maka Anda dapat membuat penangan klik global untuk halaman dengan selektor jQuery a[rel="external"]daripada memiliki klik penangan per tautan yang dipilih dengana#link_id
Anda perlu menggunakan window.open(url);
referensi:
http://www.htmlcodetutorial.com/linking/linking_famsupp_120.html
http://www.w3schools.com/jsref/met_win_open.asp
Saya baru saja menemukan solusi menarik untuk masalah ini. Saya membuat span yang berisi informasi berdasarkan pengembalian dari layanan web. Saya berpikir untuk mencoba meletakkan link di sekitar span sehingga jika saya mengkliknya, "a" akan menangkap klik tersebut.
Tetapi saya mencoba menangkap klik dengan span ... jadi saya berpikir mengapa tidak melakukan ini saat saya membuat span.
var span = $('<span id="something" data-href="'+url+'" />');
Saya kemudian mengikat handler klik ke span yang membuat tautan berdasarkan atribut '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'));
});
Ini berhasil memungkinkan saya untuk mengklik span dan membuka jendela baru dengan url yang sesuai.
Ada apa dengan <a href="myurl.html" target="_blank">My Link</a>? Tidak perlu Javascript ...
solusi ini juga mempertimbangkan kasus url kosong dan menonaktifkan (abu-abu) tautan kosong.
$(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>
Berhati-hatilah jika Anda ingin menjalankan permintaan AJAX di dalam fungsi penanganan kejadian untuk kejadian klik. Untuk beberapa alasan Chrome (dan mungkin browser lain) tidak akan membuka tab / jendela baru.
Ini bukan perbaikan yang sangat bagus tetapi berhasil:
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();
});
Contoh langsung: http://jsfiddle.net/7eRLb/
Microsoft IE tidak mendukung nama sebagai argumen kedua.
window.open('url', 'window name', 'window settings');
Masalahnya adalah window name. Ini akan berhasil:
window.open('url', '', 'window settings')
Microsoft hanya mengizinkan argumen berikut, Jika menggunakan argumen itu sama sekali: