在safari中脚本块渲染吗?

时间:2018-04-17 05:25:44

标签: javascript html safari

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

在Chrome和Firefox中,此页面将显示&#34; works&#34;然后显示警告框,但在safari 11.1中,它将为空白,然后显示警告框。

在safari中进行脚本块渲染吗?

1 个答案:

答案 0 :(得分: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);