这就是问题所在。我正在尝试打印日历。我必须加载一些css,但所有的css链接都有一个绝对路径,如/path/to/css.css
。所以,如果我只是打开窗口:
var win = open('', '_blank')
win.document.write(htmlContent)
这将正确绘制html,但它不会加载css,因为它没有指向正确的主机名。
之后更改位置将创建重定向,因此它不是真正的解决方案。
我能够实现我想要的目标:
function open_calendar(content) {
var win = open(window.location, 'Calendar')
win.addEventListener('load', function () {
win.document.write(content)
})
return win
}
窗口打开相同的位置,当页面加载时,它会将内容更改为我想要的内容。结果是它仍然使用相同的位置,并允许我绘制我的自定义HTML。缺点是我必须加载可能需要一些时间的页面...我想知道是否有一种不太常见的方法来实现相同的结果。
答案 0 :(得分:0)
您可以在编写之前在html中添加<base>
元素。并将其设置为您希望相关网址使用的基本网址。
<base href="http://example.com/some/path">
<base>
告诉浏览器哪些基本网址用于相对链接。因此,如果您已将基数设置为http://example.com/base
并且具有相对链接/path/to/css.css
,则使用的结果网址将为http://example.com/base/path/to/css.css