【发布时间】:2008-12-07 12:12:29
【问题描述】:
我有一个带有 onclick 方法的元素。
我想在另一个函数中激活该方法(或:假点击此元素)。
这可能吗?
【问题讨论】:
我有一个带有 onclick 方法的元素。
我想在另一个函数中激活该方法(或:假点击此元素)。
这可能吗?
【问题讨论】:
一旦你选择了一个元素,你就可以调用 click()
document.getElementById('link').click();
见:https://developer.mozilla.org/En/DOM/Element.click
我不记得这是否适用于 IE,但它应该。我附近没有 Windows 机器。
【讨论】:
如果你使用的是 JQuery,你可以这样做:
$('#elementid').click();
【讨论】:
我可能会误解您的问题,但是,是的,这是可能的。我会这样做的方式是:
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() function on MDN。
【讨论】:
simulateClick() 函数就在那里。
使用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">
【讨论】:
这是一个完美的例子,说明您应该使用像 Prototype 或 JQuery 这样的 JavaScript 库来抽象出跨浏览器的差异。
【讨论】:
只需调用“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 方法。
【讨论】:
您也可以尝试获取元素的 onclick 属性,然后传递给 eval。尽管对评估有很大的禁忌,但这应该可以工作。我在下面放了一个示例
eval(document.getElementById('elementId').getAttribute('onclick'));
【讨论】: