Javascript: 动态添加的脚本在另一个脚本中找不到以前定义的函数
Javascript: Dynamically added script can't find previously defined function in another script
我遇到了一个看起来非常简单的问题,但我真的找不到解决方案:
在我的代码中,我在 header:
中加载了一个脚本
<script type="text/javascript" src="../js/viewdoc/index.js?v=1.33"></script>
在那个特定的脚本中,我声明了函数:
function addResizeListener(listener){
//Attach the back button function to window resize event
if(window.attachEvent) {
window.attachEvent('onresize', listener); //Old browsers
}
else if(window.addEventListener) {
window.addEventListener('resize', listener, true); //New browsers
}
}
和:
function removeResizeListener(listener){
//Remove the listener for the back button
if(window.detachEvent) {
window.detachEvent('onresize', listener);
}
else if(window.removeEventListener) {
window.removeEventListener('resize', listener, true);
}
}
然后我将此文件加载到具有 loaderdoc id 的元素中:
if ($('#loaderdoc').is(':empty')){
$('#loaderdoc').load('../viewdoc/welcome.php');
}
我使用函数 addResizeListener 将函数绑定到 window 调整大小事件,这非常有效,index.js 脚本结束。
在加载文件的末尾welcome.php我添加了行
<script src="../js/viewdoc/welcome.js"></script>
welcome.js 是一个使用函数 removeResizeListener 和 addResizeListener 的脚本,但我收到错误:
未捕获的 ReferenceError:未定义 addResizeListener
这是为什么?函数不是在脚本添加到文档之前定义和加载的吗?
抱歉,如果之前有人回答过这个问题,我只是找不到它,或者我还不知道他搜索它的正确方法。
感谢阅读!
jQuery 的 .load()
是异步的。因此 welcome.js
将在定义函数之前执行。你必须使用回调。参见 https://api.jquery.com/load/
我遇到了一个看起来非常简单的问题,但我真的找不到解决方案:
在我的代码中,我在 header:
中加载了一个脚本<script type="text/javascript" src="../js/viewdoc/index.js?v=1.33"></script>
在那个特定的脚本中,我声明了函数:
function addResizeListener(listener){
//Attach the back button function to window resize event
if(window.attachEvent) {
window.attachEvent('onresize', listener); //Old browsers
}
else if(window.addEventListener) {
window.addEventListener('resize', listener, true); //New browsers
}
}
和:
function removeResizeListener(listener){
//Remove the listener for the back button
if(window.detachEvent) {
window.detachEvent('onresize', listener);
}
else if(window.removeEventListener) {
window.removeEventListener('resize', listener, true);
}
}
然后我将此文件加载到具有 loaderdoc id 的元素中:
if ($('#loaderdoc').is(':empty')){
$('#loaderdoc').load('../viewdoc/welcome.php');
}
我使用函数 addResizeListener 将函数绑定到 window 调整大小事件,这非常有效,index.js 脚本结束。
在加载文件的末尾welcome.php我添加了行
<script src="../js/viewdoc/welcome.js"></script>
welcome.js 是一个使用函数 removeResizeListener 和 addResizeListener 的脚本,但我收到错误: 未捕获的 ReferenceError:未定义 addResizeListener
这是为什么?函数不是在脚本添加到文档之前定义和加载的吗?
抱歉,如果之前有人回答过这个问题,我只是找不到它,或者我还不知道他搜索它的正确方法。
感谢阅读!
jQuery 的 .load()
是异步的。因此 welcome.js
将在定义函数之前执行。你必须使用回调。参见 https://api.jquery.com/load/