javascript - 打开一个与父窗口保持相同位置的空白窗口

标签 javascript html css

问题来了。我正在尝试打印日历。我必须加载一些 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/

相关文章:

javascript - 了解 JS 事件循环

html - 限制在页脚上滚动

css - Chrome 可能的错误 : Multiple Select element on page causes css transitions to trigger on page load

javascript - 使用javascript从html输入中获取值

javascript - 如何找到真正的DIV高度?

javascript - AngularJS $http.post 调用返回 502(坏网关)错误

html - Typeface.js 在 Internet Explorer 中根本不呈现标题

html - 字体不适用于 Chrome 和 Firefox,但适用于 Safari

html - 具有绝对位置的全屏宽度子 div 隐藏了其他元素

jquery - 在一个页面上集成 Bootstrap 元素