У меня есть обработчик кликов для конкретной ссылки, внутри которого я хочу сделать что-то похожее на следующее:
window.location = url
Мне это нужно, чтобы открыть URL-адрес в новом окне, как мне это сделать?
Ответы:
Вам может понравиться:
window.open('url', 'window name', 'window settings')
jQuery:
$('a#link_id').click(function(){
window.open('url', 'window name', 'window settings');
return false;
});
Кроме того, можно установить targetна _blankсамом деле.
Вот как заставить цель внутри обработчика кликов:
$('a#link_id').click(function() {
$(this).attr('target', '_blank');
});
$(this).attr('target', '_blank'); может быть изменена на this.target = "_blank";Кроме того, если ссылки привязки на странице могут быть изменены, чтобы иметь rel="external"атрибуты, тогда вы можете создать глобальный обработчик кликов для страницы с помощью селектора jQuery a[rel="external"]вместо того, чтобы иметь обработчик кликов по выбранной ссылкеa#link_id
вам нужно будет использовать window.open(url);
ссылки:
http://www.htmlcodetutorial.com/linking/linking_famsupp_120.html
http://www.w3schools.com/jsref/met_win_open.asp
Я только что нашел интересное решение этой проблемы. Я создавал промежутки, содержащие информацию, основанную на возврате от веб-службы. Я подумал о том, чтобы попытаться разместить ссылку вокруг диапазона, чтобы, если я щелкну по ней, «а» фиксирует щелчок.
Но я пытался захватить щелчок с помощью диапазона ... поэтому я подумал, почему бы не сделать это, когда я создал диапазон.
var span = $('<span id="something" data-href="'+url+'" />');
Затем я привязал обработчик кликов к диапазону, который создал ссылку на основе атрибута 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'));
});
Это успешно позволило мне щелкнуть диапазон и открыть новое окно с правильным URL-адресом.
Что не так <a href="myurl.html" target="_blank">My Link</a>? Не нужен Javascript ...
это решение также учитывало случай, когда url пуст и отключал (серый цвет) пустую ссылку.
$(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>
Имейте в виду, если вы хотите выполнять запросы AJAX внутри функции обработчика событий для события щелчка. По какой-то причине Chrome (и, возможно, другие браузеры) не открывает новую вкладку / окно.
Это не очень хорошее исправление, но оно работает:
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();
});
Живой пример: http://jsfiddle.net/7eRLb/
Microsoft IE не поддерживает имя в качестве второго аргумента.
window.open('url', 'window name', 'window settings');
Проблема в том window name. Это будет работать:
window.open('url', '', 'window settings')
Microsoft допускает только следующие аргументы, если они вообще используются: