我有一个插件,只是JavaScript的工作。 我需要把它动态地创建一个DIV元素在它的广告。
我想不通,为什么这不起作用:
$(this).append('<div class="overlay-background">Advertisement
<script type="text-javascript">
GA_googleFillSlot("blog_landing_right_rectangle_300x250");
</script>'
它的结果与“Hello World”的创建的元素,但它不执行GA-googleFillSlot功能。
HTML追加到DOM不会导致浏览器以评估该附加任何HTML脚本标记。
如果你真的想,你可以通过使用评估的JavaScript eval()
eval($(this).find("script").text());
此代码工作在我的浏览器。
$('body').append('<script>alert("test");<' + '/' + 'script>');
所以它可能是$(this)
是什么是真正造成您的问题。
你可以将其替换为'body'
,看看它的工作原理是什么?
你的情况的一个解决方法可以追加假图像与onload事件:
<img src="blank.gif" onload="GA_googleFillSlot('blog_landing_right_rectangle_300x250')" />
我知道这是一个老问题,但今天我也有过类似的问题。 采用该解决方案是createContextualFragment 。
我的代码看起来是这样的:
var tagString = '<script async type="text/javascript" src="path_to_script"></script>';
var range = document.createRange();
range.selectNode(document.getElementsByTagName("BODY")[0]);
var documentFragment = range.createContextualFragment(tagString);
document.body.appendChild(documentFragment);
请试试:
s = '<' + 'script type="text-javascript">' +
'GA_googleFillSlot("blog_landing_right_rectangle_300x250");' +
'<' + '/' + 'script>';
$(this).append(s);
UPD:唉,这是不行的,请使用wless1的解决方案,而不是