Puppeteerのpage.goto()
はhttpプロトコルやfileプロトコルなどの他、Data URI scheme文字列も引数にできる。
下記のようなHTMLファイルを用意しておき
test.html
<html><head><metacharset="utf-8"/></head><body>
Data URI schemeを表示できます
</body></html>
同じディレクトリのJavaScriptからこのように読み込むと、
importfsfrom'fs/promises';importpuppeteerfrom'puppeteer';consthtml="./test.html"constbuffer=awaitfs.readFile(html)constbrowser=awaitpuppeteer.launch({headless:false,});constpage=(awaitbrowser.pages())[0];awaitpage.goto(`data:text/html;base64,${buffer.toString("base64")}`);// ...browser.close();
Chromiumで開いてくれる。
実運用ではまず使わないけど、ちょっとした確認をするときに便利だったりする。
なお、日本語が含まれていると、高確率で文字化けするので、charset指定をしておくのが無難。1
ファイルをそのままChromiumで開いたら文字化けしなくても、なぜかData URI schemeだと化ける。なぜだ? ↩