我正在使用PhantomJS来重写HTML。我正在向元素添加background-image
属性。但是当我写出生成的DOM时,URL已被重写为本地URL。我把它归结为以下测试用例:
JS
var page = require('webpage').create();
page.open("test.html",function(){
setTimeout(function(){
page.evaluate(function(){
document.getElementById("test").style.backgroundImage="url(test.png)";
});
console.log(page.content);
phantom.exit();
},1000);
});
HTML
<html>
<body>
<div id="test"></div>
</body>
</html>
输出
$ phantomjs test.js
<html><head></head><body>
<div id="test" style="background-image: url(file:///C:/cygwin/tmp/test.png); ">
</div>
</body></html>
更新
如果您指定./test.png
或//test.png
,问题仍然存在。但是,http://example.com/test.png
保持不变,正如预期的那样。
如果在Chrome中打开此HTML文档,并且在样式检查器中将background-image
属性添加到div
元素,则无论是否在元素中检查文档,都不会修改该URL devtools中的选项卡,或通过控制台中显示的document.body.innerHTML
或复制HTML。
更新2
我刚刚发现,如果文档位于Chrome中,并且在控制台中发出了命令elt.style.backgroundImage="url(test.png");
,则会重写该URL。因此,在一天结束时,这似乎不是PhantomJS问题,尽管我仍然不理解这种行为。
显然,我不希望以这种方式重写这个URL,我不明白为什么PhantomJS觉得有必要这样做。想法?