首页 > 解决方案 > 静态页面的img引用的当前文件夹是什么

问题描述

当使用page.setContent一些静态 Html 内容的方法渲染页面时,当前文件夹中的属性(例如srcofimg标签)是什么?

例如,对于:

await page.setContent("<img src="./pic.jpg" />");

文件夹在哪里./

标签: puppeteergoogle-chrome-headless

解决方案


也许是undefined,这是我的测试结果:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
  const page = await browser.newPage();
  page.on('request', request => console.log('send request: ' + request.url()));
  page.on('console', message => console.log('console: ' + message.text()));
  await page.setContent('<img src="./test.jpg" /><script>console.log("href="+window.location.href);</script>');
  await browser.close();
})();

输出:

console: href=about:blank

页面 URL 是about:blank并且没有发送请求。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
  const page = await browser.newPage();
  page.on('request', request => console.log('send request: ' + request.url()));
  page.on('console', message => console.log('console: ' + message.text()));
  await page.setContent('<base href="https://www.google.com"><img src="./test.jpg" /><script>console.log("href="+window.location.href);</script>');
  await browser.close();
})();

输出:

console: href=about:blank
send request: https://www.google.com/test.jpg
console: Failed to load resource: the server responded with a status of 404 ()

在 URL 仍然存在时test.jpg附加元素后的浏览器请求baseabout:blank

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
  const page = await browser.newPage();
  page.on('request', request => console.log('send request: ' + request.url()));
  page.on('console', message => console.log('console: ' + message.text()));
  // set base href to local URL
  await page.setContent('<base href="file:///abc/index.html"><img src="./test.jpg" /><script>console.log("href="+window.location.href);</script>');
  await browser.close();
})();

输出:

console: href=about:blank
console: Not allowed to load local resource: file:///abc/test.jpg
send request: file:///abc/test.jpg

推荐阅读