javascript - 将整个 HTML 页面导入到另一个页面

标签 javascript html web-component html-imports

我正在尝试在我的网站中嵌入另一个网站,但由于可能会导致一些问题,我不想使用 iFrame 或 AJAX 导入来执行此操作。

<html>
 <head>
  <link rel="import" href="mysite.html">
</head>
  <body>
    <script>
	var link = document.querySelector('link[rel="import"]');
    var content = link.import;
    document.body.appendChild(content.cloneNode(true));
  </script>
  </body>
</html>

基本上,我正在尝试使用从 Web 组件导入 HTML 来实现此目的,但不幸的是,我上面的内容不起作用(我也使用正确的浏览器),并且我找到的所有示例仅用于导入特定的 div或导入页面中的元素。但是是否可以简单地加载整个页面并将其嵌入到另一个站点中?

最佳答案

它不起作用,因为你从 import 获得的对象<link rel="import">的属性(property)元素是 Document界面。 您不能将此类对象插入 <body> 中元素。

相反,您至少应该获得 <html>从其 documentElement 导入文档的元素属性:

 var content = link.import.documentElement  //returns a html element

但它仍然不正确,因为您将插入 <html> <body> 内的元素元素,这很丑。

您宁愿将导入文档的innerHTML 文本复制到主文档中:

 document.body.innerHTML = link.import.querySelector( 'body' ).innerHTML

或者将要导入的 HTML 放入 <template> 中,如果您想推迟脚本执行和加载,这是更好的选择。

关于javascript - 将整个 HTML 页面导入到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868832/

相关文章:

javascript - Handlebarsjs 对象数组 : TypeError: Cannot read property 'id' of undefined

javascript - 如何访问插槽内自定义元素的 light dom?

javascript - 为什么对象的构造函数对应于父对象的构造函数?

javascript - 多个 :not() with dynamic element attribute

javascript - 如何让文本框排除通过 JavaScript 添加的文本(Twitch 电视聊天)

javascript - 阻止嵌入式 iframe 重定向

javascript - 使用 webcomponenetsjs 的 HTMLImports 以意外的执行顺序加载导入 - firefox

javascript - 加载html导入时javascript的执行顺序

javascript - 特定字体未在 Google Chrome 上显示,但 Safari 可以

javascript - 我对 Focus 事件和 Blur 事件有疑问