如何在javascript追加中执行<script>代码

use*_*063 11 html javascript jquery dom-events nextgen-gallery

我正在使用只有javascript的插件.我需要让它动态创建一个带有广告的DIV元素.

我无法弄清楚为什么这不起作用:

$(this).append('<div class="overlay-background">Advertisement

     <script type="text-javascript">

          GA_googleFillSlot("blog_landing_right_rectangle_300x250");

     </script>'
Run Code Online (Sandbox Code Playgroud)

它导致使用"Hello World"创建的元素,但它不执行GA-googleFillSlot函数.

wle*_*ss1 15

将HTML附加到DOM中不会导致浏览器评估所述附加HTML中的任何脚本标记.

如果你真的想,你可以使用eval()以下方法评估javascript :

eval($(this).find("script").text());
Run Code Online (Sandbox Code Playgroud)


tem*_*emo 11

我知道这是一个老问题,但我今天遇到了类似的问题。解决方案是使用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);
Run Code Online (Sandbox Code Playgroud)


Azd*_*der 5

这段代码在我的浏览器中有效。

$('body').append('<script>alert("test");<' + '/' + 'script>');
Run Code Online (Sandbox Code Playgroud)

所以这可能是$(this)真正导致你的问题的原因。

您可以替换它并'body'看看它是否像这样工作吗?

  • 这对我有用,如果你打破了字符串 `...&lt;/' + 'script&gt;');` 中的 `&lt;/script&gt;` (2认同)