【发布时间】:2014-04-11 18:48:27
【问题描述】:
当用户单击按钮时,我会加载一个 javascript 库:
if (mylib.myfunction) {
mylib.myfunction();
} else {
var jsElt = document.createElement("script");
body.head.appendChild(jsElt);
jsElt.onload = function() { mylib.myfunction(); }
jsElt.src = MYLIB_URL;
}
当然可以,但是有一个问题:如果用户在 onload 事件之前再次单击,else-part 将再次执行。避免这种情况的最佳方法是什么?局部变量?还有什么?
更新:我要感谢@Suman Bogati 和@usernid 建议禁用被点击的按钮。但是,该解决方案对我来说太有限了,因为它假定您可以从加载新库的代码中访问该按钮。当然,情况并非总是如此。
在我的情况下,我不能使用这个解决方案,所以我将使用一个全局变量来代替。如果没有人有更好的主意。 ;-)
【问题讨论】:
-
在您的
script加载之前禁用该按钮,
标签: javascript onload race-condition