1
52
只有一种方法可以同步加载和执行脚本资源,即使用同步XHR 这是一个如何做到这一点的例子
但一般情况下,您不应该使用同步请求,因为这样会阻塞其他所有请求。 但也就是说,当然也有适合的场景。 我可能会使用onload处理程序将包含函数重构为异步模式。 |
2
37
这个 accepted answer 是 不是 对的。 同步加载文件与同步执行文件不同——这是OP请求的。 接受的答案将加载文件同步,但只会将脚本标记附加到DOM。只是因为 AppDead() 返回的不保证脚本已完成执行,其成员已初始化以供使用。 实现ops问题的唯一方法(请参阅警告)是在xhr上同步加载脚本,然后以文本形式读取并传递到eval()或新的函数()调用中,然后等待该函数返回。这是确保加载脚本的唯一方法 和 同步执行。 对于从用户界面或安全性的角度来看,这是否是明智的做法,我没有做任何评论,但肯定有一些用例可以证明同步加载和执行是正确的。 告诫 : 除非您使用的是Web工作者,在这种情况下,只需调用loadscripts(); |
3
10
这是我在应用程序中用于多个文件加载的代码。
这个实用程序可以被
|
4
5
我能想到的大多数类似node.js的实现都能够同步加载JS文件,并将它们用作对象/模块。
示例源(
像这样使用:
|
5
3
我对这个问题的现有答案(以及这个问题在其他stackoverflow线程上的变化)有以下问题:
或者更准确地说:
我的最后一个解决方案是,在返回之前加载脚本,并在调试器中正确地访问所有脚本(至少对于chrome而言),如下所示: 警告:以下代码可能只能在“开发”模式下使用。 (对于“发布”模式,我建议在不加载动态脚本或至少不加载eval的情况下进行预打包和缩小)。
|
6
2
如果这是一个跨域请求,它将不起作用。在这种情况下,您必须将请求的文件上传到服务器,或者创建一个输出文件的镜像PHP,并需要该PHP。 使用jquery(也适用于跨域请求):
要加载更多脚本,请参见 this 线程。 |
7
1
如果需要加载任意数量的脚本,并且只在最后一个脚本完成时继续,并且不能使用XHR(例如,由于CORS限制),那么可以执行以下操作。它不是同步的,但允许在最后一个文件加载完成时进行回调:
编辑
:更新为使用IE7、IE8和IE9(在Quirks模式下)。这些IE版本不会触发
基于
this page
旧版本的IE可能永远不会发送
|
8
1
实际上有一种方法可以加载脚本列表
然后执行它们
同步地。您需要将每个脚本标记插入到DOM中,显式地设置它的
默认情况下,注入到DOM中的脚本是异步执行的,因此必须设置
例子
工具书类
|
9
1
接受的答案不正确:
这个
这里还没有提到的最简单和最优雅的解决方案是使用承诺,比如:
然后,当您希望按顺序执行脚本时:
|
10
0
你
|
11
0
与Sean的答案相同,但不要创建脚本标记,只需评估它。这样可以确保代码实际上已经准备好使用了。 |
12
0
我的策略,经典的例子,当加载jquery ui时,我希望这能帮助您
|
13
0
使用Angular时,可以利用这样一个事实:在实例化其他服务之前,每个提供程序都已实例化。您可以将这一事实与使用xhr和@neil提到的eval()结合起来。代码如下:
要强制使提供者独立化,您需要将其注入至少一个其他指令/服务中。最好是利用脚本加载的代码的服务。
|
14
0
我知道这是一个古老的问题,但也许有人读了这个,发现它有用! 刚创建的新组件使用ES6以同步方式动态加载脚本。 项目详细信息和源代码在Github上 https://github.com/amgadfahmi/scripty |
15
0
我回答这个问题可能会迟到。
我当前的解决方案是递归地添加
要考虑的代码代码目录结构:
索引文件
J.
A.J.
B.JS
LogyNo.js
多个参数.js
|
16
0
这是我的密码
我在PJAX网站上使用这个。
|
17
-1
我使用jQuery 负载 方法应用于DIV元素。类似的东西
您可以多次加载脚本,每次一个脚本将完全替换先前加载的脚本 |
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |