作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大部分 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 中的默认 page
与 about: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/
我是一名优秀的程序员,十分优秀!