我已经获得了一些关于如何将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/
答案 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>