gpt4 book ai didi

javascript - 加载html导入时javascript的执行顺序

转载 作者:行者123 更新时间:2023-11-29 15:31:01 26 4
gpt4 key购买 nike

http://webcomponents.org/polyfills/html-imports/说如下:

Under native imports, <script> tags in the main document block the loading of imports.

为什么会这样:

<html>
<head>

<script>
console.log('index');
</script>

<script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>

<link rel="import" href="some-elt.html">

</head>
<body>
</body>
</html>

和一些-elt.html:

<html>
<head>
<script>
console.log('import');
</script>
</head>
<html>

在 chrome 中生成(本地进口):

import
index

在 Fireforx 中(polyfill):

index
import

?

看起来像<script>加载导入时标记被阻止。

是否还有一些方法可以确保在加载任何导入之前执行 js?

最佳答案

我创建了一支快笔here使用您提供的标记。
它似乎在 FF 和 chrome 中为我生成相同且正确的输出(index 然后是 import)。

但同样有可能您会在控制台中看到不同的内容。这里的罪魁祸首不是脚本元素的解析方式,而是控制台 API。这是一个非标准feature并且可能会按照说明为您返回不同的结果 here

console.log is not standardized, so the behavior is rather undefined, and can be changed easily from release to release of the developer tools

为了回答您的问题,脚本标记被设计为阻塞,因此您在 link rel="import" 之前放置的任何脚本都将在浏览器遇到导入标记之前执行。

这是另一支笔 ( http://codepen.io/vishwaabhinav/pen/bEYwaK ) 来证明这一点(下面也可用),我在其中创建 div 并将其附加到导入文档和主文档中的正文。它也按预期工作,即 inode 在导入节点之前附加到正文。

<html>
<head>

<script>
var node = document.createElement('div');
node.innerHTML = 'Index';
document.body.appendChild(node);
</script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/0.7.20/webcomponents-lite.js"></script>

<link rel="import" href="http://codepen.io/vishwaabhinav/pen/XXzjZW.html">

</head>
<body>

</body>
</html>

关于javascript - 加载html导入时javascript的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com