JavaScript插入带有async的脚本并使用其中的函数
JavaScript insert script with async and use functions from it?
我写了一个小部件,我把它包括在这样的页面上:
<script type="text/javascript">
var _sid = '1';
(function() {
var se = document.createElement('script'); se.type = 'text/javascript'; se.async = true;
se.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://') + 'dev.domain.com/widget/hello.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(se, s);
})();
</script>
现在我想找到一种方法来调用hello.js
中存在的函数,它目前看起来是这样的:
var widget = function () {
function setName(a) {
console.log(a);
}
return widget;
}();
所以我想能够像这样调用setName:widget.setName("Andy")
来自嵌入页面,但由于某种原因,我得到了"小部件未定义"
你知道我做错了什么吗?
在使用小部件之前,您需要知道它已经加载,有多种选择:
-
使用requireJs或类似的东西。
-
在你正在加载的javascript中实现一个回调函数,说它会触发"document.onHelloIsLoaded",然后如果你想知道hello是否已加载,只需将该变量设置为一个函数。
-
进行循环,检查是否设置了小部件变量。setInterval(当找到小部件并且代码已经执行时,它会取消自己)
您还需要使setName变量在您有权访问小部件时可以访问,而现在它没有。你应该放这样的东西:
var widget = {};
widget.setName = function()...
return widget;
相关文章:
- 为什么我的控制器没有启动函数.js脚本
- 在Debian中运行包含load()和print()函数的JS脚本
- 无法在java脚本中调用图像的点击事件函数
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 无法将java脚本函数与Panel'绑定;s OnLoad事件
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 从 java 脚本调用函数时 PHP 中出错
- 如何创建php函数或任何脚本/jquery Javascript,使我能够获取与复选框关联的值并添加它们
- 将javascript函数传递给.php脚本
- 为什么当我需要位于顶部的函数时,在脚本中的某些点上没有定义函数
- 如何将类型和函数传递给JSR-223脚本
- 如何减少数组的脚本中的函数
- Java脚本函数中的PHP(PCRE)验证
- 在HTML JavaScript头部分运行Google脚本函数
- jQuery函数脚本
- JavaScript添加函数脚本 - 有人可以解释一下
- 历史记录 api 状态更改函数脚本在每次发生更改时复制函数调用
- 在.html文件之外执行函数/脚本
- replaceAll函数:脚本太长而无法执行
- 中的回调函数.脚本的移动()