У меня есть элемент с методом onclick.
Я хотел бы активировать этот метод (или: подделать щелчок по этому элементу) в другой функции.
Возможно ли это?
У меня есть элемент с методом onclick.
Я хотел бы активировать этот метод (или: подделать щелчок по этому элементу) в другой функции.
Возможно ли это?
Если вы используете JQuery, вы можете сделать:
$('#elementid').click();
Как только вы выбрали элемент, вы можете вызвать click()
document.getElementById('link').click();
см. https://developer.mozilla.org/En/DOM/Element.click
Я не помню, работает ли это на IE, но это нужно. У меня нет оконной машины поблизости.
Я мог бы неправильно истолковать ваш вопрос, но, да, это возможно. То, как я это сделаю, это:
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
для обработки событий, вызванных другими элементами) >
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.
Если вы используете jQuery, вам нужно использовать функцию .trigger
, поэтому это будет что-то вроде:
element.trigger('click');
Это прекрасный пример того, где вы должны использовать библиотеку javascript, такую как Prototype или JQuery, чтобы абстрагироваться от различий между браузерами.
просто звоните "onclick"!
здесь пример html:
<div id="c" onclick="alert('hello')">Click me!</div>
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
Для IE существует метод fireEvent(). Не знаю, работает ли это для других браузеров.
Я не использовал jQuery, но IIRC, первый упомянутый метод не запускает обработчик onclick
.
Я бы назвал связанный метод onclick
напрямую, если вы не используете данные события.
Используя 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">
Вы также можете попробовать получить атрибут onclick элемента, а затем перейти в eval. Это должно работать, несмотря на большой табу на eval. Я поставил образец ниже
eval(document.getElementById('elementId').getAttribute('onclick'));