我正在使用phantomJS,默认情况下,当您与DOM元素交互时,它似乎无法在[click / change / whatever]事件中内联 - 您需要获取对它们的引用然后显式调用它们像这样;
var element = document.getElementById('myId');
element.dispatchEvent(new Event('click'));
或者像这样:
var element = document.getElementById('myId');
if(element.onclick) element.onclick();
这适用于没有参数的函数调用 但我有一些情况,其中on [click / change / whatever]函数调用有一些硬编码参数,如下所示:
<input type="text" value="some val" onclick="someFunction('hardcodedString1', 'hardcodedString2')">
其中一些函数只是一个接受两个字符串作为参数的函数。
我知道我可以像这样获得对onclick函数的引用:
var click = element.onclick;
但是我如何获得对参数的引用,或者对函数的引用,包括参数,以便我可以调用它,它的行为与单击时相同。浏览器?
类似的东西:
var click = element.onclick;
var argsList = element.onclick.args;
click(argsList);
答案 0 :(得分:0)
你应该能够实现只调用click()
,你将使用相同的参数调用它。
HTML:
<button id="my-button" onclick="test('hello world')">
TEST
</button>
<button onclick="triggerTest()">
TRIGGER TEST
</button>
JS:
function test(word) {
alert(word);
}
function triggerTest() {
document.querySelector('#my-button').click();
}
https://jsfiddle.net/L5g1mot2/2/
同时,如果您想调用引用它的相同功能,您可以执行以下操作:
function triggerTest() {
var tempClick = document.querySelector('#my-button').onclick;
tempClick.call(tempClick);
}