动态插入脚本标记而不调用函数

时间:2012-10-08 18:50:35

标签: javascript parsing dynamic

我正在尝试动态插入以下内容:

var downloadJsOnLoad = function () {

    var shareThisOne = document.createElement('script');
    shareThisOne.text = 'var switchTo5x=true;';
    document.body.appendChild(shareThisOne);

    var shareThisTwo = document.createElement('script');
    shareThisTwo.src = 'http://w.sharethis.com/button/buttons.js';
    document.body.appendChild(shareThisTwo);

    var text = 'stLight.options({publisher: "a8cae9ce-ebee-4346-9891-a1bfb0aa7005"});';

    var shareThisThree = document.createElement('script');
    shareThisThree.innerHTML = text;
    document.body.appendChild(shareThisThree);

}

jQuery(window).load(function () {
    downloadJsOnLoad();
});

一切正常,但是当解析这个javascript时,我得到一个错误,说明stLight未定义。我假设它将stLight.options方法看作可执行文件而不是普通字符串。如何解决这个问题以避免错误?

1 个答案:

答案 0 :(得分:1)

使用onload确保使用ShareThis代码(即stLight变量)时存在:

shareThisTwo.onload = function() {
    var text = 'stLight.options({publisher: "a8cae9ce-ebee-4346-9891-a1bfb0aa7005"});';

    var shareThisThree = document.createElement('script');
    shareThisThree.innerHTML = text;
    document.body.appendChild(shareThisThree);
};

那说,为什么不放弃最后一个元素的创作?你只想执行代码。

shareThisTwo.onload = function() {
    stLight.options({publisher: "a8cae9ce-ebee-4346-9891-a1bfb0aa7005"});
};