我使用phantomjs加载本地HTML,它加载本地js文件,这样的路径是这样的:是PhantomJS应该加载本地JS为本地HTML文件
/Users/me/html/page.html
/Users/me/html/page.js
和页面.html包含page.js
文件,并且我可以通过加载file:///Users/me/html/page.html
并在该页面的控制台中查看console.log
ing来验证该文件。
现在这个js文件也只是添加一个属性到身体来测试这个问题,这正常工作。当我用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 suppo sed从正在打开的页面运行js?或不?如果是的话,我在这里做错了什么?
做了一个快速测试,它确实与PhantomJS v2.0.1dev工作,记录'TRUE'。你的输出/行为是什么? – Vaviloff
您的[HTML无效](https://www.w3.org/TR/html5/semantics.html#the-html-element)。根目录下不能有脚本元素。把它放进身体或头部。 –
你比我更有代表性,你也可以按编辑按钮。 – erikvold