HTML <a>Событие Native Click - PullRequest
       31

HTML <a>Событие Native Click

0 голосов
/ 27 октября 2010

Есть ли способ программно в javascript вызвать собственное событие нажатия тега? Функции .trigger ('click') или .click () не будут работать, поскольку они вызывают событие onClick ссылки, а не событие, которое следует за URL-адресом. Мне нужно программно щелкнуть скрытую ссылку и перейти по этой ссылке на новую вкладку в том же браузере. Window.open также не будет работать, потому что это вызовет всплывающее окно, и я пытаюсь избежать этого. Мне это нужно, потому что я динамически генерирую URL на стороне сервера и отправляю ответы обратно через JSON. Затем я заполняю атрибут HREF скрытой ссылки полученным URL. Если бы я мог получить ответ о том, как это можно сделать, я был бы очень признателен.

Ответы [ 3 ]

2 голосов
/ 28 октября 2010

Если вы не хотите, чтобы это работало только в IE, у меня нет ответа для вас, но я могу сказать вам, в чем проблема. Проблема в target=_blank. Попробуйте следующий код в качестве теста - обратите внимание, что он приведет вас на Google.com - затем попробуйте написать "_blank" в качестве цели. Кажется, это единственное, что не разрешают браузеры. Частичный ответ на ваш вопрос: fireEvent() работает с IE и dispatchEvent() работает со всем остальным. Если бы кто-то еще мог улучшить этот код, я также был бы признателен за лучший ответ.

<html>
<head>
<script type="text/javascript">
window.onload = function fireElement() {
var target=document.getElementById('foobar');
if(document.dispatchEvent) { // W3C
var oEvent = document.createEvent( "MouseEvents" );
oEvent.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, target);
target.dispatchEvent( oEvent );
}
else if(document.fireEvent) { // IE
target.fireEvent("onclick");
} 
}
</script>

</head>
<body>
<div>
<a id="foobar" target="" href="http://www.google.com"></a>
</div>
</body>
</html>
2 голосов
/ 27 октября 2010

Если вы заполняете HREF ответом JSON, почему бы просто не сохранить его в переменной, а когда вы хотите перейти к нему, window.location = yourVariable;?

1 голос
/ 08 мая 2011

Из того, что я могу сказать, невозможно вызвать функцию щелчка по ссылке через javascript.Вы можете сослаться на onclick с помощью .click (), но собственный щелчок будет продолжаться до того, как он будет вызван.Поэтому, если вы хотите изменить ссылку, прежде чем переходить по ней при нажатии на ссылку, вам придется дважды щелкнуть ссылку, прежде чем она отправит вас на измененную ссылку.

...