0

我在函数中使用 OnLoad 事件时遇到问题:

        (function () {
            var ds = document.createElement('script');
            ds.type = 'text/javascript';
            ds.async = true;
            ds.src = 'http://' + ds_shortname + '.myscript.com/emb.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds);
            ds.onLoad = function(){
                alert('ok');
                var ds_div = $('ds-div');
                if (IsConnected()) 
                {
                    alert('connect');
                }else{
                    alert('not connect');
                }
            }
        })();

事实上,我的ds.onLoad不执行,我不知道为什么。我认为这是因为我的函数自己执行,但我不知道如何解决这个问题。

非常感谢。

4

1 回答 1

2

为此,请使用 More 中的Utilities/Asset类,例如:

new Asset.javascript('//connect.facebook.net/en_US/all.js', { 
    onLoad:function(){
        $('message').set('text', 'Facebook loaded!'); 
    },
    async: true
});

工作样本:http: //jsfiddle.net/FU5rk/

与您的问题直接相关:在应用 onLoad 事件之前将元素注入 DOM。我很确定如果文件在缓存中,或者下载速度非常快,它只是在您设置事件处理程序之前加载。

于 2013-04-15T12:40:58.133 回答