PhantomJS将backgroundImage属性中的URL重写为本地文件系统
我正在使用PhantomJS重写HTML。我正在向元素添加一个PhantomJS将backgroundImage属性中的URL重写为本地文件系统,phantomjs,Phantomjs,我正在使用PhantomJS重写HTML。我正在向元素添加一个背景图像属性。但是当我写出结果DOM时,URL已经被重写为本地URL。我将其归结为以下测试用例: JS var page = require('webpage').create(); page.open("test.html",function(){ setTimeout(function(){ page.evaluate(function(){ document.getElementB
背景图像属性。但是当我写出结果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>
$phantomjs test.js
更新
如果指定/test.png
或/test.png
,问题仍然存在。但是,http://example.com/test.png
保持不变,这可能是意料之中的
如果此HTML文档是在Chrome中打开的,并且样式检查器中的div
元素中添加了background image
属性,则无论是在devtools的元素选项卡中检查文档,还是通过控制台中显示的document.body.innerHTML
检查文档,还是复制HTML,都不会修改URL
更新2
我刚刚发现,如果文档位于Chrome中,那么命令elt.style.backgroundImage=“url(test.png”)代码>在控制台中发出,然后重写URL。所以在一天结束时,这似乎不是一个幻影问题,尽管我仍然不理解这种行为
显然,我不希望这个URL以这种方式被重写,我不明白为什么PhantomJS觉得有必要这样做。想法?我敢打赌,在普通浏览器中,你也会看到同样的东西。你在Chrome上试过吗?这确实很奇怪,我本以为在页面之外会看到这种行为。evaluate()
,但它却在沙箱中。如果提供绝对URL(例如https://www.google.co.uk/images/icons/product/chrome-48.png
)?对我来说,这听起来像是一个PhantomJS错误,请向他们的Git报告这个问题。报告在。