首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhantomJS从字符串创建页面

PhantomJS从字符串创建页面
EN

Stack Overflow用户
提问于 2012-07-31 23:51:00
回答 5查看 24.3K关注 0票数 34

可以从字符串创建页面吗?

示例:

代码语言:javascript
复制
html = '<html><body>blah blah blah</body></html>'

page.open(html, function(status) {
  // do something
});

我已经尝试过上面的方法,但没有成功...

另外,我认为值得一提的是,我使用的是nodejs和phantomjs-node(https://github.com/sgentle/phantomjs-node)

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-01 01:48:18

看一下phantomjs,page.open需要一个API作为第一个参数,而不是一个HTML。这就是您尝试的内容不起作用的原因。

但是,实现从字符串创建页面的效果的一种方法是托管一个空的“骨架页面”,在某个地方使用URL (可以是localhost),然后将Javascript (使用include then )包含到空页面中。包含在空白页面中的Javascript可以使用document.write("<p>blah blah blah</p>")向网页动态添加内容。

这是我做过的事,但是我想这应该行得通。

示例框架页面:

代码语言:javascript
复制
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body></body>
</html>
票数 2
EN

Stack Overflow用户

发布于 2012-08-02 13:20:13

这非常简单,看一下colorwheel.js示例。

代码语言:javascript
复制
var page = require('webpage').create();
page.content = '<html><body><p>Hello world</p></body></html>';

就这样!然后你可以操作页面,比如把它渲染成一个图像。

票数 121
EN

Stack Overflow用户

发布于 2015-04-06 17:48:59

为此,您需要将页面内容设置为您的字符串。

代码语言:javascript
复制
phantom.create(function (ph) {
  ph.createPage(function (page) {
      page.set('viewportSize', {width:1440,height:900})

      //like this
      page.set('content', html);

      page.render(path_to_pdf, function() { 
        //now pdf is written to disk.
        ph.exit();
      });
  });
});

您需要使用page.set()来设置html内容。

根据https://github.com/sgentle/phantomjs-node#functionality-details

无法直接获取/设置

属性。

而是使用版本(‘page.get’,回调)或page.set('viewportSize',{page.get:640,height:480})等。可以通过在键中包括点来访问嵌套对象,如page.set('settings.loadImages',page.set)

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11744089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档