簡體   English   中英

如何從PhantomJS中的字符串加載DOM?

[英]How can I load a DOM from a string in PhantomJS?

我在網上找到的大多數例子都涉及加載URL。

但是,如果我只是有一個包含svg或html的字符串,並且我想將它加載到dom中進行操作,我無法弄清楚如何操作它。

var fs=require('fs')
var content = fs.read("EarlierSavedPage.svg")
// How do I load content into a DOM?

我意識到,在這個示例中,正在讀取本地文件,有一種解決方法可以直接讀取本地文件,但我更感興趣的是是否可以從字符串加載頁面。

我已經查看過文檔,但沒有看到任何明顯的內容。

PhantomJS中的默認pageabout:blank相當,基本上是

<html>
    <body>
    </body>
</html>

這意味着您可以直接將svg添加到DOM並進行渲染。 看來你必須異步渲染它才能讓瀏覽器有時間實際計算svg。 這是一個完整的腳本:

var page = require('webpage').create(),
    fs = require('fs')

var content = fs.read("EarlierSavedPage.svg")

page.evaluate(function(content){
    document.body.innerHTML = content;
}, content);

setTimeout(function(){
    page.render("EarlierSavedPage.png"); // render or do whatever
    phantom.exit();
}, 0); // phantomjs is single threaded so you need to do this asynchronously, but immediately

將HTML文件加載到內容中時,可以直接將其分配給當前DOM(to page.content ):

page.content = content;

這可能還需要一些異步去耦,如上所述。

另一種方法是使用page.open實際加載HTML文件:

page.open(filePathToHtmlFile, function(success){
    // do something like render
    phantom.exit();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM