将 HTML 文件内容加载到 Div [不使用 iframe]

IT技术 javascript html
2021-02-04 02:53:07

我很确定这是一个常见问题,但我对 JS 很陌生,并且在这方面遇到了一些麻烦。

我想在不使用 iframe 的情况下将 x.html 加载到 id 为“y”的 div 中。我已经尝试了一些东西,四处搜索,但我找不到解决我的问题的体面方法。

如果可能的话,我更喜欢 JavaScript 中的东西。

提前谢谢大家!

6个回答

哇,从所有框架宣传的答案中,你会认为这是 JavaScript 变得非常困难的事情。真的不是。

var xhr= new XMLHttpRequest();
xhr.open('GET', 'x.html', true);
xhr.onreadystatechange= function() {
    if (this.readyState!==4) return;
    if (this.status!==200) return; // or whatever error handling you want
    document.getElementById('y').innerHTML= this.responseText;
};
xhr.send();

如果您需要 IE<8 兼容性,请先执行此操作以使这些浏览器跟上速度:

if (!window.XMLHttpRequest && 'ActiveXObject' in window) {
    window.XMLHttpRequest= function() {
        return new ActiveXObject('MSXML2.XMLHttp');
    };
}

请注意,使用脚本将内容加载到页面中将使该内容对没有 JavaScript 可用的客户端(例如搜索引擎)不可见。小心使用,如果您只想将数据放在公共共享文件中,请考虑服务器端包含。

奇怪,我收到一个NS_ERROR_DOM_BAD_URI: Access to restricted URI denied错误
2021-03-17 02:53:07
@Costa:听起来您正在尝试执行跨站点 XMLHttpRequest。出于安全原因,这是不允许的,除非目标站点选择加入。
2021-03-17 02:53:07
@bobince,很好的答案,你知道为什么导入文件的脚本不呈现吗?实际上,通过使用您的答案,我可以只导入 html,但不能导入从 json 文件渲染的生成内容。谢谢你的帮助。
2021-03-19 02:53:07
今天的浏览器不会让你在文件系统上使用 XHR。您将需要设置一个测试 Web 服务器。
2021-04-08 02:53:07
这是一个很好的答案,因为问题与 JQuery 无关。在某些情况下,您不能使用 JQuery 或某些框架来执行此操作。
2021-04-09 02:53:07

jQuery.load()方法:

$("#y").load("x.html");
jQuery 很棒,可以做所有事情。
2021-03-15 02:53:07
OP 从来没有说过它不能是 jquery(很多人通过 'javascript' 询问/搜索 jquery),并澄清了以下内容:“如果这是唯一的方法,我想应该没问题。我从来没有用过jQuery 虽然......”所以不,这绝对是最好的答案。
2021-03-18 02:53:07
我用它来加载 x.html ,然后加载 x.js 。这个 JS 有效,因为我在第一行设置了一个 alert(),但是 x.js 中定义的函数不起作用,知道为什么吗?
2021-04-05 02:53:07
@EdgarsŠturms 它可能有效,并且简洁,但它不是正确的答案,因为该问题没有要求 jQuery 解决方案。
2021-04-09 02:53:07
为什么这个答案没有被标记为已回答,对我来说它就像一个魅力!令人惊奇的是,只需要 jquery 就可以制作一个动态主页。
2021-04-13 02:53:07

2019
使用 fetch

<script>
fetch('page.html')
  .then(data => data.text())
  .then(html => document.getElementById('elementID').innerHTML = html);
</script>

<div id='elementID'> </div>

fetch 需要接收一个 http 或 https 链接,这意味着它不会在本地工作。

注意:正如Altimus Prime所说,这是现代浏览器的一项功能

很好的答案!它适用于我在 VSCode 和 live-server 中开发以在 Windows Powershell 中进行测试。访问使用Javascript本地文件需要调整安全策略设置,像这样:stackoverflow.com/questions/49772982/...
2021-04-10 02:53:07
+1 是现代浏览器的一个很好的答案,但请注意:经过几个小时的测试后,我无法在 Cordova 9.0.0 中完成这项工作,不得不求助于老式的XMLHttpRequest工作正常。我认为 Cordovafetch还不支持
2021-04-12 02:53:07

我建议进入那里的 JS 库之一。它们确保兼容性,因此您可以非常快速地启动和运行。jQuery 和 DOJO 都非常棒。例如,要执行您在 jQuery 中尝试执行的操作,它会是这样的:

<script type="text/javascript" language="JavaScript">
$.ajax({
    url: "x.html", 
    context: document.body,
    success: function(response) {
        $("#yourDiv").html(response);
    }
});
</script>
    document.getElementById("id").innerHTML='<object type="text/html" data="x.html"></object>';