【发布时间】:2016-02-26 04:55:27
【问题描述】:
我是用phantomjs来加载本地的html,也就是加载本地的js文件,所以路径是这样的:
/Users/me/html/page.html
/Users/me/html/page.js
并且 page.html 包含 page.js 文件,我可以通过加载 file:///Users/me/html/page.html 并在该页面的控制台中查看 console.loging 来验证这一点。
现在这个js文件也只是在body中添加了一个属性来测试这个问题,可以正常工作。当我使用 PhantomJS 加载此 html 文件时,js 文件不会更改 DOM(即不会将属性添加到 body)。
js文件最后加载在html文件上,所以在页面底部:
<html>
<head></head>
<body>
<script src="page.js"></script>
</body>
</html>
再次正常加载此页面可以正常工作,但使用 phantom.js 脚本则无法正常工作:
var page = require("webpage").create();
var system = require("system");
var args = system.args;
var pageURL = args[1];
page.open(pageURL, function(status) {
if (status !== 'success')
{
console.log(status);
}
else
{
var result = page.evaluate(function()
{
return document.body.getAttribute("data-changed") || "not found";
});
console.log(result);
}
});
page.js 看起来像这样:
document.body.setAttribute("data-changed", "true");
console.log("changed the page with js!")
那么,PhantomJS 是否应该从正在打开的页面运行 js?或不?如果是,那么我在这里做错了什么?
【问题讨论】:
-
做了一个快速测试,它确实适用于 PhantomJS v2.0.1dev,记录
true。你的输出/行为是什么? -
您的HTML is invalid。根目录下不能有脚本元素。将其放入身体或头部。
-
你的rep比我多,你也可以按编辑键。
-
@Vaviloff 我也遇到了同样奇怪的事情。它记录为真,但我不断收到“找不到变量:$”
-
@Carine,请发个问题,好像你有不同的html页面
标签: javascript phantomjs