gpt4 book ai didi

javascript - 添加回调函数时 phantomJS click() 不起作用

转载 作者:行者123 更新时间:2023-12-03 06:12:46 25 4
gpt4 key购买 nike

我有这个脚本用于测试 phantomJS 中的 jquery click() 功能。

var page = require('webpage').create(),
address;

address="https://jsfiddle.net/t8atxcfL/";

page.onConsoleMessage = function(msg) {
console.log('eval- ' + msg);
};
page.open(address, function(status){

if(status==="success"){
console.log("Page loaded");

page.viewportSize={width:1920, height:1080};
page.render("before.png");

page.includeJs("//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function(){
console.log("executing jquery");
var toFocus = page.evaluate(function(){
console.log("getting iframe name...")
return document.getElementsByTagName("iframe")[0].name;
});
page.switchToFrame(toFocus);

page.evaluate(function() {
console.log($("#par").text());
$("#par").click();
console.log($("#par").text());
});

page.viewportSize={width:1920, height:1080};
page.render("after.png");

phantom.exit();
});

}
});

这个版本似乎工作正常,输出是:

user@home$ phantomjs chooseframe.js 
Page loaded
executing jquery
eval- getting iframe name...
eval-
Before clicking...

eval- I was clicked

问题是当我将 $("#par").click(); 替换为 $("#par").click(function(){console.log( “我现在点击”)});

然后,输出变成

user@home$ phantomjs chooseframe.js 
Page loaded
executing jquery
eval- getting iframe name...
eval-
Before clicking...

eval-
Before clicking...

问题是,即使回调函数为空,例如 $("#par").click(function(){}); 并且即使我删除了 phantom .exit() 行,无论我等待多久,输出都保持不变。

有人可以告诉我如何使 .click() 按预期方式工作吗?或者为什么它不能工作?

最佳答案

$("#par").click(); 触发链接的现有点击处理程序,而后面的示例设置一个新的点击处理程序,但不会点击要触发的元素点击处理程序。

只需确保在添加点击处理程序后点击即可:

$("#par").click(function() {
console.log("I am now clicking");
});
$("#par").click();

关于javascript - 添加回调函数时 phantomJS click() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39249336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com