问题来了。我正在尝试打印日历。我必须加载一些 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。缺点是我必须加载页面,这可能需要一些时间...我想知道是否有更简单的方法来实现相同的结果。
最佳答案
您可以添加 <base>
在写之前将元素添加到您的 html 中。并将其设置为您希望相对 URL 使用的基本 URL。
<base href="http://example.com/some/path">
<base>
告诉浏览器什么基本 url 用于相关链接。因此,如果您将 base 设置为 http://example.com/base
并有一个相对链接 /path/to/css.css
使用的结果 url 将是 http://example.com/base/path/to/css.css
关于javascript - 打开一个与父窗口保持相同位置的空白窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189403/