【发布时间】:2016-06-23 03:56:23
【问题描述】:
我正在尝试使用 javascript 在另一个中嵌入两个 html 文档。我遇到的问题是 onload 事件不会在嵌入式文档上触发。
paper.htm 有几个 div 标签,应该包含 curve.htm,但在 curve.htm 中,onload 事件没有触发
paper.htm
<html>
<head>
<title>Curve</title>
<script>
(function () {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'curve.htm', true);
xhr.onreadystatechange = function () {
if (this.readyState !== 4) return;
if (this.status !== 200) return;
document.getElementById('chartBlock').innerHTML = this.responseText;
}
xhr.send();
})();
</script>
</head>
<body>
<div id="paper">
<div id="border">
<div id="chartBlock"></div>
<div id="titleBlock"></div>
</div>
</div>
</body>
</html>
curve.htm(部分)
<html>
<head>
<script src="File:///Temp/curveData.js" type="text/javascript"></script>
<script>
window.onload = init; //this never fires!
function init() { //... }
</script>
<body>
<canvas id="chartCanvas" width="954" height="625"></canvas>
</body>
</html>
我试过了:
使用 jquery 加载 html 文档(SO 上有很多示例)。
将onload放在html文档(curve.htm)的body标签中
用 jquery 试过:
<script>
$(function () {
$("#chartBlock").load("curve.htm");
$("#titleBlock").load("titleblock.htm");
});
</script>
用 html 试过:
<body onload="init()">
非常感谢您研究任何其他想法。谢谢
【问题讨论】:
-
div 不是窗口,它不能包含
html、head或body标签。更改 div 的innerHTML不会在该 div 上触发onload,无论添加的内容是什么。onload仅在自身加载一些外部资源的元素上触发(如img和iframe)。您可以在设置 div 的innerHTML后简单地调用init。
标签: javascript html dom