背景
- 我使用 Graffiti CMS 为本地慈善/服务组织运行 ASP.NET 网站。
- 该组织的领导者希望开始集成第三方后端管理系统,将内容公开为完整的 HTML 页面。
- 其中一个页面(官员列表)使用内联脚本加载图片或占位符(取决于是否有给定官员的图片)。
- 我创建了一个服务器端代理,可以使用 jQuery 的
.load()
从这些页面加载内容。 AJAX 功能。 - 我可以使用 iframe 很好地显示此内容,但这感觉真的很困惑,如果内容的大小发生变化,我可能需要更改 iframe 的大小以确保它全部显示(哎呀!)。<
问题
如果我创建一个<div>
在涂鸦帖子中,并使用 $("#divid").load(url)
要加载内容,HTML 内容可以正常加载,但内联脚本被删除,因此军官图像和占位符都不会显示。
问题
了解到问题的原因是 jQuery 几乎肯定会在将内联脚本加载到 DOM 之前尝试通过删除内联脚本来防止潜在的不良内容,有没有一种方法使用 jQuery 来获取此 HTML 并将其加载到我的 DOM 将保留脚本,但不会打开主要的安全漏洞?我确实信任加载内容的系统(如果这有影响的话)。
建议?我希望尽可能简单......任何太复杂的事情,我都愿意坚持使用 iframe。
提前致谢!
最佳答案
使用 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>
关于asp.net - 通过 jQuery 加载包含内联脚本的 HTML 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659202/