在Javascript中创建脚本标记并在之后调用函数

时间:2011-11-21 17:08:37

标签: javascript

我有一些代码,我试图包含一个脚本文件,然后在脚本文件中调用一个函数。代码是:

function includeJS(p_file) {
    var v_js  = document.createElement('script');
    v_js.type = 'text/javascript';
    v_js.src = p_file;
    document.getElementsByTagName('head')[0].appendChild(v_js);
}

function checkFlash(){
    includeJS('/scripts/swfobject.js');
    var playerVersion = swfobject.getFlashPlayerVersion();
    return playerVersion.major;
}

alert(checkFlash());

问题是它在checkFlash()失败时尝试获取播放器版本。我检查了firebug,它显示脚本已加载并且正确读取文件,因此它不是路径问题。

我认为这可能是includeJS函数中的延迟问题,但是当我在警报之前编写代码而没有它是一个函数时,它仍然会出现同样的问题。

关于如何完成这样的事情的任何想法?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你的问题是在尝试检查播放器版本之前脚本文件没有完成加载(就像你原先想的那样)。你可能想试试这个:

function includeJS(p_file, callback) {
    var v_js  = document.createElement('script');
    v_js.type = 'text/javascript';
    v_js.src = p_file;

    v_js.onreadystatechange = callback;
    v_js.onload = callback;

    document.getElementsByTagName('head')[0].appendChild(v_js);
}

function checkFlash(){
    var playerVersion;
    includeJS('/scripts/swfobject.js', function () {
        var playerVersion = swfobject.getFlashPlayerVersion();
        alert(playerVersion.major);
    });
}

checkFlash();

这是此similar question的已接受答案中提供的解决方案的修改版本。