Подтвердить что ты не робот

Подделка "click" для активации метода onclick

У меня есть элемент с методом onclick.

Я хотел бы активировать этот метод (или: подделать щелчок по этому элементу) в другой функции.

Возможно ли это?

4b9b3361

Ответ 1

Если вы используете JQuery, вы можете сделать:

$('#elementid').click();

Ответ 2

Как только вы выбрали элемент, вы можете вызвать click()

document.getElementById('link').click();

см. https://developer.mozilla.org/En/DOM/Element.click

Я не помню, работает ли это на IE, но это нужно. У меня нет оконной машины поблизости.

Ответ 3

Я мог бы неправильно истолковать ваш вопрос, но, да, это возможно. То, как я это сделаю, это:

var oElement = document.getElementById('elementId');   // get a reference to your element
oElement.onclick = clickHandler; // assign its click function a function reference

function clickHandler() {
    // this function will be called whenever the element is clicked
    // and can also be called from the context of other functions
}

Теперь, всякий раз, когда этот элемент будет нажат, будет выполнен код в clickHandler. Аналогичным образом, вы можете выполнить тот же код, вызвав функцию из контекста других функций (или даже назначить clickHandler для обработки событий, вызванных другими элементами) >

Ответ 4

var clickEvent = new MouseEvent('click', {
  view: window,
  bubbles: true,
  cancelable: true
});
var element = document.getElementById('element-id'); 
var cancelled = !element.dispatchEvent(clickEvent);
if (cancelled) {
  // A handler called preventDefault.
  alert("cancelled");
} else {
  // None of the handlers called preventDefault.
  alert("not cancelled");
}

element.dispatchEvent поддерживается во всех основных браузерах. Приведенный выше пример основан на примере функции simulateClick() для MDN.

Ответ 5

Если вы используете jQuery, вам нужно использовать функцию .trigger, поэтому это будет что-то вроде:

element.trigger('click');

http://api.jquery.com/trigger/

Ответ 6

Это прекрасный пример того, где вы должны использовать библиотеку javascript, такую ​​как Prototype или JQuery, чтобы абстрагироваться от различий между браузерами.

Ответ 7

просто звоните "onclick"!

здесь пример html:

<div id="c" onclick="alert('hello')">Click me!</div>
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>

Ответ 8

Для IE существует метод fireEvent(). Не знаю, работает ли это для других браузеров.

Ответ 9

Я не использовал jQuery, но IIRC, первый упомянутый метод не запускает обработчик onclick.

Я бы назвал связанный метод onclick напрямую, если вы не используете данные события.

Ответ 10

Используя javascript, вы можете вызвать click() и focus(), как показано ниже.

document.addEventListener("click", function(e) {
  console.log("Clicked On : ",e.toElement);
},true);
document.addEventListener('focus',function(e){
  console.log("Focused On : ",e.srcElement);
},true);

document.querySelector("#button_1").click();
document.querySelector("#input_1").focus();
<input type="button" value="test-button" id="button_1">
<input type="text" value="value 1" id="input_1">
<input type="text" value="value 2" id="input_2">

Ответ 11

Вы также можете попробовать получить атрибут onclick элемента, а затем перейти в eval. Это должно работать, несмотря на большой табу на eval. Я поставил образец ниже

eval(document.getElementById('elementId').getAttribute('onclick'));