我試圖使一些內嵌HTML使用以下PhantomJs腳本鏈接到外部CSS文件:PhantomJs:內嵌HTML與外部CSS文件
var page = require('webpage').create();
page.content = '';
page.content += '<html><head>';
page.content += '<link rel="stylesheet" href="http://example.com/css/layout.css" type="text/css" media="Screen">';
page.content += '</head><body>';
page.content += '<h1>test</h1>';
page.content += '</body></html>';
page.onResourceRequested = function(requestData, request) {
console.log('::loading', requestData['url']); // this doesn't get logged
};
page.onLoadFinished = function() {
console.log('::rendering');
page.render('output.png');
phantom.exit();
};
的layout.css
可以訪問文件還好有wget
但這裏的phantomjs的輸出:
$ ./phantomjs --debug=true render_demo.js
... snip ...
2014-01-06T12:17:53 [DEBUG] WebPage - updateLoadingProgress: 10
2014-01-06T12:17:53 [DEBUG] WebPage - updateLoadingProgress: 10
2014-01-06T12:17:53 [DEBUG] WebPage - updateLoadingProgress: 100
2014-01-06T12:17:53 [DEBUG] Network - Resource request error: 5 ("Operation canceled") URL: "http://example.com/css/layout.css"
::rendering
沒有創建輸出.png
文件。
有關如何確保外部CSS資源在呈現前完全加載的任何想法? 它似乎工作好,當我請求與page.open
就是這樣,謝謝! 我犯了一個錯誤,認爲函數分配總是先在一個範圍內執行(與函數定義相同)。 – EoghanM