<!DOCTYPE html>
<html>
<head>
<meta charSet="utf-8">
</head>
<body>
  works
  <script defer>
    alert()
  </script>
</body>
</html>


在Chrome和Firefox中,此页面将显示“作品”,然后显示警报框,但在safari 11.1中,它将为空白,然后显示警报框。

脚本会在野生动物园中阻止渲染吗?

最佳答案

根据the docsdefer元素说:


  设置此布尔值属性是为了向浏览器指示脚本应在文档解析后但在触发DOMContentLoaded之前执行。


它还指出:


  如果缺少src属性(即对于内联脚本),则不得使用此属性,在这种情况下,它将无效。


这意味着它不能与您提供的代码一起使用,因为a)它是内联的,b)它不是DOM元素。

尽管症状似乎与您的代码相似,但是当我使用document.createElement将项目添加到外部文件中的DOM时,所有浏览器的功能均相同。

我将其归结为浏览器引擎之间的异常。再一次,添加和DOM以及使用外部文件时,没有问题。

这是代码,我之前提到过document.createElement,但这只是其中的一部分,您还必须将其附加到文档中。

alert()

let x = document.createElement('p');
x.innerHTML = "Testing"
document.body.appendChild(x);

07-24 09:46
查看更多