onClick - 获取函数AND硬编码参数的引用

时间:2017-05-15 16:14:33

标签: javascript html phantomjs

我正在使用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); 

1 个答案:

答案 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);
}

https://jsfiddle.net/6xk31p1u/1/