2017-03-16 178 views
0

我有一个html页面和一个script,我想要以特定方式处理它:在它被加载之后但在它被执行之前。基本上我想预先加载脚本,但在满足特定条件时执行。脚本不依赖于其他脚本,所以我让非阻塞(async):在执行之前处理外部JavaScript脚本加载事件

<script onload='onScripLoad()' scr='...' async></script> 

我想要的是类似onload的东西,但它的下载脚本之前执行。可能吗?

这里的问题是,我可以预加载脚本,但无法与我的应用生命周期中所需的事件同步。执行onScripLoadafter脚本已被加载ANDafter它已被执行。我需要的是在脚本执行时进行控制(推迟执行)。

添加更多详细信息我想预加载脚本并在body中有某个元素可用时执行它,但是我无法将该脚本放在该元素之后,因为在这种情况下,它会与其他一些资源正在下载的head。因此,我想将我的脚本放在head中,使其成为async,一旦下载完成,只有在特定元素可用时(或者在执行之前创建该元素的事件)才执行。我不能让它不是异步的,因为它是一个我无法控制的脚本,并且不希望我的整个页面依赖它。

+1

难道你不能把外部脚本中的代码放在一个函数中,然后只有在两个条件都为真时才调用该函数? – nnnnnn

+0

难道你不能只将外部脚本中的逻辑放在一个函数中,该函数会提前加载,然后在特定条件为真时从辅助脚本中调用该函数? –

+0

这就是我如何控制外部脚本的方式。不幸的是它是一个三维派对库,它有一定的JavaScript,开始下载后立即执行。 –

回答

1

你可以只加载外部脚本的头部部分,包裹在函数内部的逻辑,然后再打一个条件内该功能在以后:

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> 

功能将首先加载,但在条件内调用之前不会使用它,让您控制它的执行时间。

希望这会有所帮助! :)

+0

*“函数externalFunction会立即加载”* - 即使使用'async'属性? – nnnnnn

+0

我的意思是它将首先被加载:P –

+0

这就是我如何控制外部脚本的方式。不幸的是它是一个三维派对库,它有一定的JavaScript,开始下载后立即执行。 –

相关问题