我希望在$(window).load()被触发之前将SVG文件加载到变量中。
我使用jQuery.get()加载文件。问题是,这个函数是异步工作的,当读取SVG文件时,$(window).load()已被调用。
所以我有以下代码:
var data;
$(document).ready(function () {
jQuery.get(
"my.svg",
function (_data) {
data = _data;
},
'text');
});
$(window).load( function () {
alert(data);
});
警报将显示“未定义”。如果稍后会调用它(例如5秒后),那么它将显示SVG文件的内容。
有什么建议吗?谢谢!
答案 0 :(得分:1)
我同意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>