我需要一些jQuery的帮助。
当我试图通过$ .get获取嵌入js页面内容的html时,它的效果很好。但是当我试图将它附加到某个div时,所有脚本都会删除。
在控制台中,当我正在做这样的事情时它看起来很好
$('.my_div').html() + '<script>alert("text")</script>'
但是当我在做
$('.my_div').html($('.my_div').html() + '<script>alert("text")</script>')
脚本正在运行并正在删除
如何在不运行和删除的情况下将html + js代码附加到div?
谢谢!
UPD:
我的例子:
的index.html
...
<div class="masonry">
<div class="a1">
<p>text</p>
<script>alert('example')</script>
</div>
<div class="a1">
<p>text</p>
<script>alert('example')</script>
</div>
<div class="a1">
<p>text</p>
<script>alert('example')</script>
</div>
</div>
...
<script>
$.get('get_news.php',function(response){
$('.masonry').append(response);
});
</script>
...
get_news.php
<div class="b1">
<p>text</p>
<script>alert('example1')</script>
</div>
<div class="b1">
<p>text</p>
<script>alert('example1')</script>
</div>
<div class="b1">
<p>text</p>
<script>alert('example1')</script>
</div>
...
我会得到
<div class="masonry">
<div class="a1">
<p>text</p>
<script>alert('example')</script>
</div>
<div class="a1">
<p>text</p>
<script>alert('example')</script>
</div>
<div class="a1">
<p>text</p>
<script>alert('example')</script>
</div>
<div class="b1">
<p>text</p>
<script>alert('example1')</script>
</div>
<div class="b1">
<p>text</p>
<script>alert('example1')</script>
</div>
<div class="b1">
<p>text</p>
<script>alert('example1')</script>
</div>
</div>
我该怎么做?
答案 0 :(得分:1)
这是.html()
的默认行为 - 它会在向DOM添加内容时删除脚本和eval
。 jQuery甚至提供$.parseHTML
,它默认剥离脚本而不评估它们以防止XSS。
如果您已在页面中执行脚本,那么绝大多数情况下您只需将代码放在同一个脚本中即可。但是,如果您真的希望/需要在页面上添加新脚本,则可以通过append
执行此操作:
$('.my_div').append($('<script>', { text: 'alert("foo");' }));
答案 1 :(得分:0)
如果您不想删除原始内容,可以使用追加。至于停止执行脚本标记,一种方法是将脚本类型更改为"text/html"
或使用html转义函数。