0

私は動的に以下を挿入しようとしています:

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メソッドをプレーンな文字列ではなく実行可能ファイルと見なしていると想定しています。エラーを回避するにはどうすればこれを回避できますか?

4

1 に答える 1

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"});
};
于 2012-10-08T19:25:03.053 に答える