尝试异步加载广告商脚本标签 - 无法正常工作

时间:2011-07-12 11:10:15

标签: javascript jquery

我在advertisespace.com上设置了一些横幅区域 - 我正在尝试使用jquery加载脚本标记,以便在页面加载后加载。然而它不起作用。这是我的代码。

这是我用来包含脚本标记的函数:

function jsinclude(file, dom) {
   if (document.createElement && document.getElementsByTagName) {
     if(dom=='undefined')
        var dom = document.getElementsByTagName('head')[0];

     var script = document.createElement('script');
     script.setAttribute('type', 'text/javascript');
     script.setAttribute('src', file);

     script.setAttribute('charset',"utf-8");

     dom.appendChild(script);
   } else {
     alert('Your browser can\'t deal with the DOM standard. That means it\'s old. Go fix it!');
   }
 }

这里是我调用函数的方式:

$(function(){
jsinclude('http://ads.advertisespace.com/somethingsomething.js', document.getElementById('location-of-banner-1'));


jsinclude('http://ads.advertisespace.com/somethingsomething.js', document.getElementById('location-of-banner-2'));

})

结果是脚本标记被插入到正确的位置,但横幅没有显示,即所引用的脚本文件中的代码永远不会被执行。我该如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您使用标记了您的问题,为什么不利用它的优势。

dom不是head元素,而dom == 'undefined'检查变量dom是否等于字符串'undefined'。你必须明确地设置它,并且可能不是这种情况。无论如何,有一个head元素,所以没有必要将它传递给函数 - 函数可以自己处理它。

此外,目前检查DOM功能不适用。我们住在2011年,所有浏览器都包含这些功能。

function jsinclude(file) {
     var script = $("<script>", { type:    'text/javascript',
                                  src:     file,
                                  charset: 'utf-8' });
     $('head').append(script);
}