我有一个html文本,我得到后,解析它与Handlebars
let mut handlebars = Handlebars::new();
let source = fs::read_to_string("receipt-template.html").unwrap();
handlebars.register_template_string("t1", source).unwrap();
let mut data = BTreeMap::new();
data.insert("name".to_string(), "世界!".to_string());
// this variable contains <html>....</html> that I want to load into headless chrome
let html = handlebars.render("t1", &data).unwrap();
据我从headless chrome documentation here了解,它只能加载一个网站网址,如“https://www.wikipedia.org”。
let browser = Browser::default()?;
let tab = browser.new_tab()?;
/// Navigate to wikipedia
tab.navigate_to("https://www.wikipedia.org")?;
有没有可能使用headless chrome来加载存储在变量/内存中的html字符串?
我知道这在Node.js中是可能的,因为我使用puppeteer.setContent(html)
。
/// NODE.JS
const launchOptions = { executablePath }
const browser = await puppeteer.launch(launchOptions)
const page = await browser.newPage()
await page.setContent(html) // this sets the browser content into html variable directly without the use of file
1条答案
按热度按时间wfveoks01#
是的,可以加载HTML字符串。
在Chrome中,你可以使用data-URI /data协议直接加载HTML,如下所示:
data:text/html;charset=utf-8,<Here goes your UTF8 encoded HTML>
.因此,您真正需要的是
tab.navigate_to
方法。下面是一个完整的例子:
它会在你的cargo根目录下生成一个新的JPEG,看起来像这样: