DIV标记中的沙箱/限制HTML代码

时间:2011-06-24 08:53:10

标签: jquery html jquery-ui

目前我正在开发基于插件和小部件的CMS。

小部件是一个html / javasctript代码片段,它始终位于主div(比如它的widget div)元素中。

使用jquery和jquery-ui作为javascript框架。

我的问题:

如何在包含div的内容中限制/沙箱html的小部件,以便如果有任何不正确的html可以打破所有页面的布局可以避免?

----编辑----

好的我知道了,服务器端是否可行/可能?

  1. 从小部件文件中读取小部件html
  2. 检查它是否是正确的html(使用一些html解析器库)。
  3. 修复并过去模板。

3 个答案:

答案 0 :(得分:1)

你不能。

假设正确的HTML,您可以给它一个固定的高度和宽度,将溢出设置为隐藏,滚动或自动,并将位置设置为相对以停止CSS打破布局。

然而,没有任何客户端可以阻止小部件(例如)额外</div>过早关闭容器。

答案 1 :(得分:1)

  

我们如何限制/沙盒的html   包含div的小部件,以便   如果是任何不正确的HTML   可以打破所有页面的布局即可   要避免吗?

如果您需要强有力地执行此操作,唯一的选择是使用iframe

如果小部件HTML包含以下内容:

</div></div></div></div></div></div></div></div></div>

这将打破任何页面(使用div s,换句话说:所有页面。)


来自现已删除的评论:

  

关于您的更新,应该   工作。 HTML Tidy之一,   http://www.php.net/manual/en/domdocument.loadhtml.php,   或HTML Purifier应该是你的   寻找。

答案 2 :(得分:1)

正如昆汀已经说过并解释过的那样,这是不可能的。

如果您想确保小部件不会影响您网站的其他部分,则必须将其放入iframe(似乎是common practice)。