0

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

有什么建议么?谢谢!

4

1 回答 1

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>
于 2013-07-25T18:01:55.533 回答