我使用的是phantomJS,当您与DOM元素进行交互时,默认情况下似乎不会触发内联on [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);

最佳答案

您只需调用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/

关于javascript - onClick-获取功能和硬编码参数的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43984298/

10-13 00:42