在执行脚本之前等待外部动态加载的脚本加载
Wait for external, dynamic loaded script to load before executing script
对于一个餐厅网站,我需要使用一个很难加载的预订模块。
加载它的脚本需要高达 4 秒的时间,这是在我开始工作的 380mb/s 以太网连接上。网站正常运行需要 4 到 6 秒。
这是我必须实现的代码。
<div id="[reservation-company-name]-booknow">
<script type="text/javascript" src="//www.[reservation-company-name].com/WID/Widget/Cors"></script>
<script>bookNow({companyID: '[numbers]',target: '#[reservation-company-name]-booknow',language: 'NL'});</script>
</div>
主页上隐藏了预订小部件,但这仍然意味着脚本将在网页加载时加载。
我知道我必须在页面完全加载后动态加载脚本。
$(window).load(function() {
$("#[reservation-company-name]-booknow").append("<script type='text/javascript' src='//www.[reservation-company-name].com/WID/Widget/Cors'></script><script>bookNow({companyID: '[numbers]',target: '#[reservation-company-name]-booknow',language: 'NL'});</script>
});
但是,问题是,在第一个脚本仍在加载时,第二个具有 bookNow 函数的脚本被触发。这会导致错误并且小部件无法正确加载。
当我在 运行 第二个脚本上设置超时时,小部件将加载,但由于连接速度不同,无法设置正确的超时时间。
我在 Whosebug 上搜索了如何在执行函数之前等待动态加载的脚本完全加载。
我发现的大多数内容与动态加载脚本无关,或者与异步和延迟无关,这对我不起作用。
怎么办?
好吧,我自己找到了解决方案,只是想把它留在这里让其他人找到,因为我在这里不容易找到答案。
Jquery has a nice getScript function 加载脚本然后运行函数。正是我要找的。
$(window).load(function() {
var url = "//www.[reservation-company-name].com/WID/Widget/Cors";
$.getScript(url, function() {
$('#[reservation-company-name]-booknow').append("<script>bookNow({companyID: '686937',target: '#[reservation-company-name]-booknow',language: 'NL'});</script>");
});
});
对于一个餐厅网站,我需要使用一个很难加载的预订模块。
加载它的脚本需要高达 4 秒的时间,这是在我开始工作的 380mb/s 以太网连接上。网站正常运行需要 4 到 6 秒。
这是我必须实现的代码。
<div id="[reservation-company-name]-booknow">
<script type="text/javascript" src="//www.[reservation-company-name].com/WID/Widget/Cors"></script>
<script>bookNow({companyID: '[numbers]',target: '#[reservation-company-name]-booknow',language: 'NL'});</script>
</div>
主页上隐藏了预订小部件,但这仍然意味着脚本将在网页加载时加载。
我知道我必须在页面完全加载后动态加载脚本。
$(window).load(function() {
$("#[reservation-company-name]-booknow").append("<script type='text/javascript' src='//www.[reservation-company-name].com/WID/Widget/Cors'></script><script>bookNow({companyID: '[numbers]',target: '#[reservation-company-name]-booknow',language: 'NL'});</script>
});
但是,问题是,在第一个脚本仍在加载时,第二个具有 bookNow 函数的脚本被触发。这会导致错误并且小部件无法正确加载。
当我在 运行 第二个脚本上设置超时时,小部件将加载,但由于连接速度不同,无法设置正确的超时时间。
我在 Whosebug 上搜索了如何在执行函数之前等待动态加载的脚本完全加载。 我发现的大多数内容与动态加载脚本无关,或者与异步和延迟无关,这对我不起作用。
怎么办?
好吧,我自己找到了解决方案,只是想把它留在这里让其他人找到,因为我在这里不容易找到答案。
Jquery has a nice getScript function 加载脚本然后运行函数。正是我要找的。
$(window).load(function() {
var url = "//www.[reservation-company-name].com/WID/Widget/Cors";
$.getScript(url, function() {
$('#[reservation-company-name]-booknow').append("<script>bookNow({companyID: '686937',target: '#[reservation-company-name]-booknow',language: 'NL'});</script>");
});
});