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

时间:2013-08-19 02:47:01

标签: phantomjs

我正在使用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>

更新

  1. 如果您指定./test.png//test.png,问题仍然存在。但是,http://example.com/test.png保持不变,正如预期的那样。

  2. 如果在Chrome中打开此HTML文档,并且在样式检查器中将background-image属性添加到div元素,则无论是否在元素中检查文档,都不会修改该URL devtools中的选项卡,或通过控制台中显示的document.body.innerHTML或复制HTML。

  3. 更新2

    我刚刚发现,如果文档位于Chrome中,并且在控制台中发出了命令elt.style.backgroundImage="url(test.png");,则会重写该URL。因此,在一天结束时,这似乎不是PhantomJS问题,尽管我仍然不理解这种行为。

    显然,我不希望以这种方式重写这个URL,我不明白为什么PhantomJS觉得有必要这样做。想法?

0 个答案:

没有答案