Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onload和的结果不同。为什么?_Javascript_Html_Dom_Onload - Fatal编程技术网

Javascript window.onload和的结果不同。为什么?

Javascript window.onload和的结果不同。为什么?,javascript,html,dom,onload,Javascript,Html,Dom,Onload,这是我的一个推论,可能是。我在玩createHTMLDocument,试图设置一个onload事件来触发它。以下基于找到的代码的代码使用内联onload,并且工作正常: <div> <iframe id="frame" src="about:blank"> </iframe> </div> <script> function makeDocument() { var frame = document.getElementB

这是我的一个推论,可能是。我在玩createHTMLDocument,试图设置一个onload事件来触发它。以下基于找到的代码的代码使用内联onload,并且工作正常:

<div>
  <iframe id="frame" src="about:blank"> </iframe>
</div>

<script>
  function makeDocument() {
  var frame = document.getElementById("frame");

  var doc = document.implementation.createHTMLDocument("New Document");
  var p = doc.createElement("p");
  p.innerHTML = "This is a new paragraph.";
  doc.body.appendChild(p);

  var destDocument = frame.contentDocument;
  var srcNode = doc.documentElement;
  var newNode = destDocument.importNode(srcNode, true);

  destDocument.replaceChild(newNode, destDocument.documentElement);
  console.log(destDocument.readyState);
}
</script>
<body onload="makeDocument()"></body>
如果运行此命令,您将注意到,不仅文本没有添加到框架中,而且正如控制台输出所示,在激发window.onload时无法初始化内部文档。为什么不呢


我已经在那个窗口中读到了。onload和inline onload本质上是一样的。但是后来。如果有人能向我解释这一点,我会非常高兴的。

你应该将makeDocument分配给window.onload,而不是调用它。放下枪,这就是原因!就这么简单。在写这篇文章的所有时间里,我所要做的就是按退格键两次。还有一个问题:那么,当我试图将函数分配给window.onload时,我实际上是在调用函数?是的,它被调用了,它的返回值被分配给window.onload。对于该函数,返回值未定义。
<div>
  <iframe id="frame" src="about:blank"> </iframe>
</div>
<script>
  function makeDocument() {
    // same as previous
  }
  window.onload = makeDocument();
</script>