我正在开发一个Firefox扩展程序,它使用在线源代码查看器工具作为代理来下载被阻止的网页,然后将页面的HTML代码注入空白选项卡。
到目前为止,它按预期工作,但问题是新标签没有与之关联的URL,因此为链接,图像,样式表和其他资源设置的所有相对路径都不会被取消再指向真实路径。
我已尝试过history.pushState()
和history.replaceState()
,但只有在新网址与当前网址相同的情况下,它们才有效,而新标签页没有网址一点都不。
答案 0 :(得分:4)
您可以使用<base>
元素,
指定用于文档中包含的所有相对URL的基本URL。
您可以使用var base = document.createElement('base');
创建它,然后在将其附加到文档的<head>
后,您可以使用其href
属性指定文档的baseURI:{{1 }}
base.href= yourDocURI;
&#13;
var anchor = document.createElement('a');
// set a relative path to it
anchor.href = '../../someDoc.html';
// create a new document
var doc = document.implementation.createHTMLDocument('empty page');
// append our anchor to the about:blank doc
doc.body.appendChild(anchor);
snippet.log('without base : '+ anchor.href);
var base = document.createElement('base');
base.href = "http://example.com/some/folder/index.html";
doc.head.appendChild(base);
snippet.log('with base : '+ anchor.href);
&#13;