注入包含JS的HTML

时间:2015-04-09 15:43:13

标签: javascript html

我已经获得了一些关于如何将HTML注入HTML而无法编辑的重要提示。

现在的问题是,该片段包含JS,它不会呈现给页面。

Jquery看起来像这样:

    $(document).ready(function() {   
            var $body = $(document.body);   
              if ($body.is(".ly_productdetails.ProductDetails.en.en_GB")) {
            $('.info_section').prepend('<div id="test-widget"></div><script type="text/javascript" src="/frontend/latest/build.min.js"  data-test="test-widget" data-instance="xyz" data-apikey="12345678" data-tags="" async="async"></script>');
        }
        });

我尝试在引号之前加入反斜杠,但这并没有效果。

你怎么能把它写到页面上以便包含JS?

非常感谢,

亚当

JSfiddle:https://jsfiddle.net/fs6qgzrj/

2 个答案:

答案 0 :(得分:2)

这是一项安全功能。 jQuery允许HTML代码中的<script>元素,但它不会执行它们(至少不是src="..."部分;内联脚本可以工作)。这是因为jQuery无法确保脚本不是恶意的或来自安全源(代码中的错误可能允许人们在表单元素中输入脚本)。

请改用jQuery.getScript(url, successCallack)

另请参阅:jQuery - script tags in the HTML are parsed out by jQuery and not executed

答案 1 :(得分:0)

看起来jQuery在解析HTML时不会加载外部脚本。但是如果你创建一个脚本元素,它将:

$('body').prepend($('<script>', {
  src: 'http://dev.bridgebase.com/barmar_test/test.js'
}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>