gpt4 book ai didi

javascript - 无法让 page.injectJs() 在 PhantomJS 中工作

转载 作者:行者123 更新时间:2023-11-30 16:51:55 26 4
gpt4 key购买 nike

我的代码中有以下内容:

phantom.createPage(function(page){
page.onCallback = function(data) {
console.log("ph callback: ", data);
};
page.open(req.query.testUrl, function(status){
if(status !== 'success'){
page.close();
res.status(500)
.send('Page "' + testUrl + '" could not be loaded.')
.end();
return;
}

var result = page.injectJs('lib/my-test-script.js');
console.log('injectJS: ', result);

page.evaluate(function(){
window.callPhantom(window.mocha.constructor.name);
}, function(){
console.log('finished');
page.close();

res.json({status: status});
res.end();
});
});
});

并且 console.log('injectJS: ', result); 正在输出“injectJS: undefined”,而不是像此处文档所说的那样显式 false:

http://phantomjs.org/api/webpage/method/inject-js.html

此外,我已经使用 fs.readDir() 验证了 my-test-script.js 在那里,但看起来我的代码根本没有被注入(inject),更不用说了,我从未从 page.onCallback() 获得控制台输出。

此时我完全迷路了。我显然做错了什么,但我不知道它可能是什么。任何帮助将不胜感激。

关联GitHub Issue .

最佳答案

您正在使用 node.js 和 PhantomJS 之间的桥梁(可能是 phantomjs-node ),因此 PhantomJS 文档不会直接应用。

所有桥接函数(基本上所有 PhantomJS 函数)都需要一个额外的回调,如果它们还没有这样做的话。这在 Functionality details 下进行了描述在桥文档中。 injectJs也是一样。此外,您注册事件的方式也不同:

page.set("onCallback", function(data) {
console.log("ph callback: ", data);
});
...
page.injectJs('lib/my-test-script.js', function(){
page.evaluate(function(){
window.callPhantom(window.mocha.constructor.name);
}, function(){
console.log('finished');
page.close();

res.json({status: status});
res.end();
});
});

关于javascript - 无法让 page.injectJs() 在 PhantomJS 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403533/

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