gpt4 book ai didi

javascript - Phantomjs 使用带有 page.includeJs 的本地文件?

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:06 26 4
gpt4 key购买 nike

我正在使用 PhantomJS 截取网页。然而,该库调用托管的 jQuery 文件以在页面 DOM 中注入(inject) jQuery 功能以允许进行一些操作。在这里看到:http://phantomjs.org/api/webpage/method/include-js.html

代码如下所示:

if ( loaded ) {
page.includeJs("http://code.jquery.com/jquery-1.8.3.min.js",
function() { . . .

我不想对 JS 进行外部调用,因为 (a) 它速度较慢且 (b) 它不可靠。我想使用本地副本并设置该路径,但它没有加载。

page.includeJs("assets/javascript/jquery.min.js",
function() { . . .

这里有什么问题?为什么我的路径没有像我预期的那样工作?此函数 page.includeJs 是否不允许相对路径?

最佳答案

根据文档,此函数包括来自给定 URL 的脚本,需要从托管页面访问该脚本。显然,您的本地路径在远程主机(相对或绝对)上不可访问,因此您需要使用 injectJs 注入(inject)脚本相反。

编辑:这是我用于测试的代码:

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

page.open("http://ipecho.net/", function(status) {
if ( status === "success" ) {
if (page.injectJs("jquery.min.js")) {
var h1 = page.evaluate(function() {
return $("h1:eq(0)").css({fontSize: 10, color: "red"}).text();
});
console.log(h1);
}
}
page.render("test.png");
phantom.exit();
});


额外的代码也可以像 jquery 一样注入(inject),并且肯定会工作。记住 evaluate() 限制(但在这种情况下这并不是什么大问题):

Note: The arguments and the return value to the evaluate function must be a simple primitive object. The rule of thumb: if it can be serialized via JSON, then it is fine.

Closures, functions, DOM nodes, etc. will not work!


编辑:还有关于您的文件路径问题:check what is your working directory .因此,使用相对路径可能很棘手,所以我建议您使用绝对路径。 webpage.libraryPath是你所需要的全部。希望我现在能帮到你。

关于javascript - Phantomjs 使用带有 page.includeJs 的本地文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26456746/

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