我有一个html
页面和一个script
,我希望以特定的方式处理它们:在加载之后,但在执行之前。基本上,我想要预先加载脚本,但当某些条件满足时执行。脚本不依赖于其他脚本,因此我将其设为非阻塞(async
):
<script onload='onScripLoad()' scr='...' async></script>
我想要的是类似于onload
的东西,但它是在下载的脚本之前执行的。有可能吗?
这里的问题是,我可以预加载脚本,但无法与我的应用程序生命周期中所需的事件同步。onScripLoad
is executed after
脚本已加载AND
after
它已执行。我需要的是有控制的时候脚本被执行(推迟执行)。
添加更多细节时,我想要预加载脚本并在body
中有某些元素可用时执行它,但我不能将脚本直接放在该元素之后,因为在这种情况下,它会与head
中正在下载的其他一些资源一起排队。因此,我希望将我的脚本放在head
中,将其设置为async
,并在下载后仅在特定元素可用时执行(或在执行之前创建该元素)。我不能让它不是异步的,因为这是一个我无法控制的脚本,我不希望我的整个页面依赖于它。
发布于 2017-03-16 09:58:00
您只需在head部分加载外部脚本,将逻辑包装在一个函数中,然后在以后的某个条件中调用该函数:
externalscript.js:
function externalFunction(data) {
console.log(data);
}
指数:
<head>
<script src='externalscript.js' async></script>
</head>
<body>
<script>
var body_data = 'test';
if (timing-driven-condition) {
externalFunction(body_data);
}
</script>
</body>
函数externalFunction
将首先被加载,但是直到它在条件中被调用时才会被使用,这让您可以控制它何时执行。
希望这能有所帮助!:)
https://stackoverflow.com/questions/42823843
复制相似问题