Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Имитировать _blank (https://javascript.ru/forum/misc/2033-imitirovat-_blank.html)

SunnyDay 23.10.2008 12:09

Имитировать _blank
 
Вроде бы несложно, но нигде не нашёл.. Подскажите пожалуйста, как имитировать клик по ссылке с target="_blank" на JS, мне это нужно для обхода блокировки всплывающих окон.

Octane 23.10.2008 14:25

А чем
window.open(...);
arguments[0].preventDefault();

не устраивает?
Если всплывающие окна блокируются, то тут уже без вариантов.

SunnyDay 23.10.2008 14:44

всплывающие окна блокируются) а вот нажатие ссылки с target = _blank - нет! Мне просто не обязательно нужно новое окно - хотябы новая вкладка с этой страницей. Я так понимаю нужно как-то без window.open обойтись.

SunnyDay 23.10.2008 16:46

Ну так как, никто такое не делал?

ZoNT 23.10.2008 16:53

ну так каликай на ссылке c target="_blank", что тебя не устраивает???

SunnyDay 23.10.2008 17:29

мне надо чтобы кликнул JavaScript, подскажите, как имитировать щелчок на объекте.

ZoNT 23.10.2008 17:31

иммитировать клик можно, но это тебе ничего не даст, так как клик скриптом не инициализирует переход по ссылке. Клик скриптом отличается от клика человеком (сделано специально для блокирования вот таких зловредных скриптов).

SunnyDay 23.10.2008 18:34

ну тогда как мне сделать этот самый клик человеком?))) никак чтоли?)

ZoNT 23.10.2008 18:41

сделать клик человеком: сказать человеку, чтобы он либо добавил этот сайт с исключения попап-блокера, либо сам наджал на ссылку.
Иначе - никак.

SunnyDay 24.10.2008 10:52

Хмм.. А подскажи, какнибудь так не прокатит:

function simulateClick() {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var cb = document.getElementById("link_blank"); 
  var canceled = !cb.dispatchEvent(evt);
  if(canceled) {
    // A handler called preventDefault
    alert("canceled");
  } else {
    // None of the handlers called preventDefault
    alert("not canceled");
  }
}


Часовой пояс GMT +3, время: 16:58.