我正在尝试使用Javascript动态插入Tweetmeme按钮。我目前正在整个网站上使用jQuery。这是我正在使用的脚本。我基本上想要通过一类日志条目循环遍历所有博客条目,并将以下JavaScript附加到最后。这个Javascript直接来自tweetmeme.com。这对我不起作用,它与append()之间的代码有关。它不喜欢第二组脚本标记。
<script type="text/javascript">
$(document).ready(function() {
$('.journal-entry').each(function(index) {
$(this).append('<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script>');
});
});
</script>
感谢任何帮助。 感谢。
答案 0 :(得分:4)
不要这样做。
将<script>
HTML内容插入DOM是不可靠的:它在不同浏览器中的工作方式略有不同,jQuery无法保护您免受差异的影响。
特别是,编写innerHTML
永远不会导致<script>
元素的内容执行,但随后将<script>
元素从它移动到新父元素(这是jQuery的append
进程的一部分)可能导致脚本执行,但并不总是(取决于浏览器)。
无论如何,它永远不会奏效,因为查看button.js
,它正在调用document.write()
。该函数仅在初始文档解析时调用是有意义的;如果您之后从事件中调用它,则该呼叫将简单地替换整个页面内容,从而破坏您现有的页面。调用document.write()
的脚本只能 在<script>
元素的执行路径内从文档加载时运行。您根本不能将脚本包含在动态创建的内容中,因为它不是为它设计的。
(如果它让你感觉更好,它根本就没有设计; button.js脚本是一个严重破坏的旧垃圾,包括使用escape
而不是正确的encodeURIComponent
的不正确的网址转义1}} - 并且缺少HTML转义。远离这些完全白痴你可能会更好。)
答案 1 :(得分:2)
</script>
来电中字符串中的结束append(...)
正在关闭整体<script>
尝试将其拆分为两个字符串。 E.g:
$(this).append('<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></'+'script>');