我正在尝试动态插入以下内容:
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方法看作可执行文件而不是普通字符串。如何解决这个问题以避免错误?
答案 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"});
};