PhantomJS将backgroundImage属性中的URL重写为本地文件系统

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

我正在使用PhantomJS重写HTML。我正在向元素添加一个
背景图像
属性。但是当我写出结果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报告这个问题。报告在。