Как имитировать target= "blank" в JavaScript
когда пользователь нажимает на ссылку, мне нужно обновить поле в базе данных, а затем открыть запрошенную ссылку в новом окне. Обновление не проблема, но я не знаю, как открыть новое окно, не требуя, чтобы они нажали на другую гиперссылку.
<body onLoad="document.getElementById('redirect').click">
<a href="http://www.mydomain.com?ReportID=1" id="redirect" target="_blank">Report</a>
</body>
7 ответов:
<script> window.open('http://www.example.com?ReportID=1', '_blank'); </script>второй параметр является необязательным и имя целевого окна.
Это может помочь
var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a"); link.href = 'http://www.google.com'; link.target = '_blank'; var event = new MouseEvent('click', { 'view': window, 'bubbles': false, 'cancelable': true }); link.dispatchEvent(event);
Я знаю, что это сделано и разобрались дело, но вот что я использую, чтобы решить эту проблему в моем приложении.
if (!e.target.hasAttribute("target")) { e.preventDefault(); e.target.setAttribute("target", "_blank"); e.target.click(); return; }в основном то, что здесь происходит, я запускаю проверку, если ссылка имеет . Если это не так, он останавливает запуск ссылки, настраивает ее для открытия в новом окне, а затем программно нажимает на нее.
вы можете пойти на один шаг дальше и пропустить остановку на оригинал статьи (и сделать код намного более компактный), пытаясь это:
if (!e.target.hasAttribute("target")) { e.target.setAttribute("target", "_blank"); }если вы использовали jQuery, чтобы абстрагироваться от реализации добавления атрибута кросс-браузер, вы должны использовать это вместо
e.target.setAttribute("target", "_blank"):jQuery(event.target).attr("target", "_blank")возможно, вам придется переделать его, чтобы соответствовать вашему точному прецеденту, но вот как я поцарапал свой собственный зуд.
здесь демо из него в действии для вас, чтобы возиться.
(ссылка в jsfiddle возвращается к этому обсуждению .. нет необходимости в новой вкладке :))
Я лично предпочитаю использовать следующий код, если это для одного канала. В противном случае, вероятно, лучше всего создать функцию с аналогичным кодом.
onclick="this.target='_blank';"Я начал использовать это, чтобы обойти строгий тест XHTML W3C.
вот как я это делаю с jQuery. У меня есть класс для каждой ссылки, которую я хочу открыть в новом окне.
$(function(){ $(".external").click(function(e) { e.preventDefault(); window.open(this.href); }); });
Это может помочь вам!--3-->открыть все ссылки на странице:
$(".myClass").each( function(i,e){ window.open(e, '_blank'); } );он будет открывать каждый
<a href="" class="myClass"></a>связать элементы с другой вкладкой, как вы бы нажали каждый из них.вам нужно только вставить его в консоль браузера. jQuery framework требуется
Comments