如何在$(window).load()之前执行异步jQuery.get()?

时间:2013-07-25 17:50:43

标签: javascript jquery svg

我希望在$(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文件的内容。

有什么建议吗?谢谢!

1 个答案:

答案 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>