Javascript PhantomJS从字符串创建页面
是否可以从字符串创建页面 例如:Javascript PhantomJS从字符串创建页面,javascript,node.js,phantomjs,Javascript,Node.js,Phantomjs,是否可以从字符串创建页面 例如: html = '<html><body>blah blah blah</body></html>' page.open(html, function(status) { // do something }); html='blah blah blah' 打开页面(html、函数(状态){ //做点什么 }); 我已经尝试过上面的方法,但没有成功 另外,我认为值得一提的是,我将nodejs与phantomj
html = '<html><body>blah blah blah</body></html>'
page.open(html, function(status) {
// do something
});
html='blah blah blah'
打开页面(html、函数(状态){
//做点什么
});
我已经尝试过上面的方法,但没有成功
另外,我认为值得一提的是,我将nodejs与phantomjs节点一起使用(https://github.com/sgentle/phantomjs-node)
谢谢 查看phantomjs,page.open需要URL作为第一个参数,而不是HTML字符串。这就是为什么您尝试的方法不起作用
但是,您可能能够实现从字符串创建页面的效果的一种方法是,在某个地方承载一个带有URL的空“骨架页面”(可以是localhost),然后将Javascript(使用includeJs)包含到空页面中。包含在空白页中的JavaScript可以使用<代码>文档。写(“ BLAH BLAH < /P>”)< /C> >动态地向网页添加内容。p>
我曾经这样做过,但看来这应该行得通
框架页面示例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body></body>
</html>
非常简单,请看一看示例
var page=require('webpage').create();
page.content=“你好,世界””;
就这些!然后,您可以操作页面,例如将其呈现为图像。只是想提及我最近也有类似的需求,并发现我可以将file://样式引用作为URL参数传递,因此我将HTML字符串转储到本地文件中,然后将完整路径传递到捕获脚本(django_screamshot)它基本上使用casperjs和phantomjs+capture.js脚本
无论如何,它可以正常工作,而且速度相当快。要做到这一点,您需要将页面内容设置为字符串。
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内容
依照
无法直接获取/设置属性。而是使用page.get('version',callback)或page.set('viewportSize',{width:640,height:480})等 可以通过在关键点中包含点来访问嵌套对象,例如 page.set('settings.loadImages',false)
我在PhantomJS 2.0.0版中使用了以下内容。而以前,我使用page.open()从文件系统打开一个页面并设置回调:
page.open("bench.html", pageLoadCallback);
现在,我通过HTML页面的字符串变量完成了同样的事情。page.setContent()
方法需要一个URL作为第二个参数,它使用fs.absolute()
来构造一个文件://URL
我想也是。。。我看到有人在加载本地文件并将它们放入数组,然后用幻影“打开”它们。我以为他们实际上是在加载html内容,但再次查看后,我意识到这只是文件名!我相信以上这些对我来说应该很好。。。。谢谢你的帮助!我已经迟到了,但是。。。这仅在使用phantom的cli版本时有效。我使用的插件不可能。。。再次声明。@mike,这不是node.js代码,这是幻影脚本,可以与我见过的许多npm幻影模块一起使用。这也会呈现嵌入html字符串中的javascript吗?比如“js在这里修改页面…..blahblah”@sjdirect,因此您最好使用
page.injectJs(“someotherpagemodifyingcode.js”)代码>
page.open("bench.html", pageLoadCallback);
page.onLoadFinished = pageLoadCallback;
page.setContent(bench_str, "file://" + fs.absolute(".") + "/bench.html");