通过jQuery加载包含内联脚本的HTML内容

的背景

  • 我使用Graffiti CMS为本地慈善/服务组织运行一个ASP.NET站点。
  • 该组织的领导者希望开始集成第三方后端管理系统,该系统将内容公开为完整的HTML页面。
  • 其中一个页面,即官员列表,使用内联脚本来加载图片或占位符(取决于是否有给定官员的图片)。
  • 我已经创建了一个服务器端代理,可以使用jQuery的.load() AJAX函数从这些页面加载内容。
  • 我可以使用iframe显示这些内容,但感觉非常糟糕,如果内容的大小发生变化,我可能需要更改iframe的大小以确保全部显示(blech!)。

问题

如果我在Graffitipost中创建

,并使用$("#divid").load(url)来加载内容,HTML内容加载正常,但内联脚本被剥离,因此$("#divid").load(url)图像都没有也不显示占位符。

问题

了解问题的原因是jQuery几乎肯定会在我将其加载到我的DOM之前通过删除内联脚本来防止潜在的坏事,有没有办法使用jQuery来抓取这个HTML并将其加载到我的DOM中将保留脚本,但不打开主要安全漏洞? 我确实相信我正在加载内容的系统,如果这有所不同的话。

建议? 我希望尽可能简单地保持这个……任何事情都太复杂了,而且我也可以坚持使用iframe。

提前致谢!

@devhammer

对我不起作用……

         

警告框显示..但如果你用document.write替换它, document.write中没有任何内容......你有“开始结束”

希望这可以帮助!

使用document.write时出现问题。 如果您能够修改源页面,则可以修改它们以使用innerHtml技术。

要这样做,你会改变这样的事情:

 

对此:

 

尝试手动设置HTML,如下所示:

 $.get(url, function(htmlText) { $('#divid').html(htmlText); }); 

我很确定这会执行脚本。