How to execute [removed] code in a javascript appe

2019-07-18 02:24发布

我有一个插件,只是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功能。

Answer 1:

HTML追加到DOM不会导致浏览器以评估该附加任何HTML脚本标记。

如果你真的想,你可以通过使用评估的JavaScript eval()

eval($(this).find("script").text());


Answer 2:

此代码工作在我的浏览器。

$('body').append('<script>alert("test");<' + '/' + 'script>');

所以它可能是$(this)是什么是真正造成您的问题。

你可以将其替换为'body' ,看看它的工作原理是什么?



Answer 3:

你的情况的一个解决方法可以追加假图像与onload事件:

<img src="blank.gif" onload="GA_googleFillSlot('blog_landing_right_rectangle_300x250')" />


Answer 4:

我知道这是一个老问题,但今天我也有过类似的问题。 采用该解决方案是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);


Answer 5:

请试试:

s = '<' + 'script type="text-javascript">' +
    'GA_googleFillSlot("blog_landing_right_rectangle_300x250");' +
    '<' + '/' + 'script>';
$(this).append(s);

UPD:唉,这是不行的,请使用wless1的解决方案,而不是



文章来源: How to execute