Javascript 有条件地加载外部脚本不工作,没有错误

Javascript 有条件地加载外部脚本不工作,没有错误,javascript,jquery,conditional,external-script,Javascript,Jquery,Conditional,External Script,在我的情况下,我有: var url = "http://ads.eyeonx.ch/adserverscript/custom.min.js"; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; $('.ad').append(script); console.log('ad loaded'); 我收到控制台消息“ad loaded”,但是ad没有

在我的情况下,我有:

var url = "http://ads.eyeonx.ch/adserverscript/custom.min.js";
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
$('.ad').append(script);
console.log('ad loaded');
我收到控制台消息“ad loaded”,但是ad没有显示,当我检查元素时,
没有使用class
ad
将添加到div元素中


Firebug没有出现任何错误,有什么明显的地方我不知道为什么这不起作用吗?我至少希望脚本标记出现在元素中

“已加载广告”无论如何都会被打印出来。无论脚本是否成功加载到“ad”类元素中。你需要打印广告的内容

var result = document.getElementsByClassName("ad")[0].innerHTML;

console.log(result);

或者,您可以尝试“查看源代码”以查看页面上加载的内容。正如@KingCodeFish所建议的,Chrome开发者工具也是一个功能强大的工具。

我不能对此发表评论,但请尽量这样写:

$('.ad').html('')

jQuery.html([string])
函数定义
.ad
的内部html


但是您不需要为此创建变量…

这方面的确切问题仍然不清楚,为什么在检查元素时代码没有显示出来,但是我注意到Firefox控制台(不是Firebug控制台)中的浏览器错误,它抱怨外部脚本使用了
document.write()。这似乎与加载页面后添加该页面的功能冲突

我的解决方案是使用iframe。因此,不是:

var url = "http://ads.eyeonx.ch/adserverscript/custom.min.js";
$("<script>").attr({"type": "text/javascript", "src": url}).appendTo(".ad");

其中
/ads/ad.html
只包含标准的
内容。

对我来说很好:@KingCodeFish,是的,你说得对。奇怪的是,相同的代码似乎在我正在处理的网站上不起作用,并且没有报告任何错误。不确定会有什么冲突,但奇怪的是,您包含了jQuery,并且没有使用它的全部功能。尝试以下操作:
var url=”http://ads.eyeonx.ch/adserverscript/custom.min.js";
$(“”).attr({“type”:“text/javascript”,“src”:url}).appendTo(“.ad”)
Updated fiddle:Try
jQuery('.ad')。append(script)
,您可能有一些设计怪异的框架依赖项,它会把美元符号弄乱。如果这个东西有一个
append
方法呢?那就可以解释了。那是一个不好的方法。它应该是:
$(“”).attr({“type”:“text/javascript”,“src”:url}).appendTo(“.ad”)
@KingCodeFish您的方法更重,76字节。这种方式有72个字节。@Errorever,原因不是长度,而是jQuery如何处理脚本标记。@Errorever我们不是在玩代码高尔夫。我们正在定义最佳实践。开发人员工具是比查看源代码更好的工具。每个主要的现代浏览器都可以使用它,它为您提供了各种各样的调试工具,尤其是Chrome。如果这是您的结论,请接受这个答案。@KingCodeFish,我必须等待2天才能接受我自己的答案。
$("<iframe>").attr({"class": "ad", "src": "/ads/ad.html", "scrolling": "no"}).prependTo('#container');