gpt4 book ai didi

javascript - 如何从 PhantomJS 中的字符串加载 DOM?

转载 作者:行者123 更新时间:2023-11-30 12:36:30 25 4
gpt4 key购买 nike

大部分 examples我在网上发现涉及加载 URL。

但是,如果我只是有一个包含 svg 或 html 的字符串并且我想将它加载到 dom 中进行操作,我不知道如何操作它。

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

我意识到,在这个例子中,正在读取本地文件的地方,有一个 workaround用于直接读取本地文件,但我更感兴趣的是是否可以从字符串加载页面。

我已经看了the documentation但没有看到任何明显的东西。

最佳答案

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(分配给 page.content ):

page.content = content;

这可能还需要像上面那样进行一些异步解耦。

另一种方法是使用 page.open 实际加载 HTML 文件:

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

关于javascript - 如何从 PhantomJS 中的字符串加载 DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25922985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com