Javascript 如何在$(window.load()之前执行异步jQuery.get()?
我希望在启动$(window).load()之前将SVG文件加载到变量中 我使用jQuery.get()加载文件。问题是,该函数异步工作,在读取SVG文件时,已经调用了$(window).load() 所以我有以下代码:Javascript 如何在$(window.load()之前执行异步jQuery.get()?,javascript,jquery,svg,Javascript,Jquery,Svg,我希望在启动$(window).load()之前将SVG文件加载到变量中 我使用jQuery.get()加载文件。问题是,该函数异步工作,在读取SVG文件时,已经调用了$(window).load() 所以我有以下代码: var data; $(document).ready(function () { jQuery.get( "my.svg", function (_data) { data = _data; }
var data;
$(document).ready(function () {
jQuery.get(
"my.svg",
function (_data) {
data = _data;
},
'text');
});
$(window).load( function () {
alert(data);
});
警报将显示“未定义”。如果稍后将调用它(例如,5秒后),那么它将显示SVG文件的内容
有什么建议吗?谢谢 我同意,如果您想以艰难的方式完成任务,setInterval可能是您想要的解决方案,因为您永远无法知道AJAX请求需要多长时间 我建议将您的代码重新构造为如下:
<script>
$(document).ready(function () {
//this can remain async: TRUE
jQuery.get(
"my.svg",
function (_data) {
//call function to do something to svg file
//if you are relying on the SVG to be there in order to call an action
//then why not wait for the SVG to load first and then call the action
svgAction(_data);
},
'text');
function svgAction(img_code){
//do something with img code now
}
});
</script>
$(文档).ready(函数(){
//这可以保持异步:TRUE
jQuery.get(
“my.svg”,
函数(_数据){
//调用函数对svg文件执行操作
//如果您依赖SVG来调用某个操作
//那么,为什么不先等待SVG加载,然后调用操作呢
svgAction(_数据);
},
“文本”);
函数SVGAAction(img_代码){
//现在就用img代码做点什么吧
}
});
使用此方法,需要一个setInterval
和一个检查数据内容的条件语句。您可以强制执行同步请求。或者使用setInterval。谢谢!我同意它肯定比setInterval()好。但这种方法相当复杂。尤其是当必须预加载多个SVG文件时。我希望有一些简单的解决办法:-)很高兴我能帮上忙!顺便说一句,这是一个简单的解决方案……而且我不认为在原始问题中提到/暗示了多个SVG。你可能应该为此开始一个新问题。