.load()
AJAX函数从这些页面加载内容。如果我在Graffiti帖子中创建<div>
,并使用$("#divid").load(url)
加载内容,HTML内容加载正常,但内联脚本被删除,因此官员图像和显示占位符。
了解问题的原因是jQuery几乎肯定试图通过在将其加载到我的DOM之前删除内联脚本来防止潜在的不良内容,是否有一种方法使用jQuery来获取此HTML并将其加载到我的DOM将保留脚本,但不会打开主要的安全漏洞?我相信我正在加载内容的系统,如果这有所不同。
连连呢?我希望尽可能简单地保持这个......任何事情都太复杂了,我也可以坚持使用iframe。
提前致谢!
答案 0 :(得分:3)
使用document.write时出现问题。如果您能够修改源页面,则可以修改它们以使用innerHtml技术。
为此,你会改变这样的事情:
<div id="testDiv">
<script type="text/javascript">
document.write("<img src='image1.jpg' alt='' />");
</script>
</div>
对此:
<div id="testDiv">
<div>
<script type="text/javascript">
document.getElementByid('testDiv').innerHTML = "<img src='image1.jpg' alt='' />";
</script>
答案 1 :(得分:0)
尝试手动设置HTML,如下所示:
$.get(url, function(htmlText) { $('#divid').html(htmlText); });
我很确定这会执行脚本。
答案 2 :(得分:0)
对我不起作用......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
</head>
<body>
<script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
var dynamic = 'begin <script type="text/javascript">alert("hello");<\/script> end';
$('#test').html(dynamic);
});
</script>
<div id="test"></div>
</body>
</html>
警告框显示..但是如果用document.write
替换它,则document.write中没有任何内容......您有“开始结束”
希望这有帮助!