如何创建一个独立的HTML块?

时间:2011-10-03 13:48:15

标签: javascript html css iframe

我想知道是否有某种方法可以创建一个独立的HTML块。

更多解释: 我的问题是我有一个网页,我允许一些用户可以添加内容(可能包含HTML和CSS) 我允许他们在某个块中添加他们的内容,但有时他们的内容可能不是干净的代码,并且可能包含一些没有结束的DIVS,甚至一些DIV结束时没有启动DIV 这有时会完全扭曲我的页面

有没有办法让他们的内容独立于我的父div显示,以便我的div首先显示良好,然后显示其中的内容?

对不起,我很抱歉。 感谢您提供任何帮助

的试用版

5 个答案:

答案 0 :(得分:4)

  

有时他们的内容可能不是干净的代码,可能包含一些   DIVS没有结束,甚至一些DIV结束没有开始DIV这个   有时会完全扭曲我的页面

最简单的解决方案是将提交的内容添加到<iframe>内的页面中。这样,提交的HTML无效就没关系。

如果您不得不担心用户可能会提交恶意内容(例如JavaScript),问题会变得更加困难:您需要清理HTML。我不知道如何在不知道你正在使用的服务器端语言的情况下如何做到这一点。

答案 1 :(得分:4)

  

我的问题是我有一个网页,其中我允许一些用户可以添加内容(可能包含HTML和CSS)我允许他们在某个块内添加他们的内容,但有时他们的内容可能不是干净的代码,并且可能包含一些没有结束的DIVS,甚至一些DIV结束而没有开始DIV这有时会完全扭曲我的页面

如果这是您要解决的问题,那么使用一些标记来表示一大块代码是独立的也无济于事:它们可能包含HTML中的“独立部分结束”代码。

如果要将代码放在页面中,则需要对其进行解析,清理它(使用白名单)以删除任何可能有害的内容,然后从DOM生成干净的标记。

答案 2 :(得分:0)

你可以使用静态iframe。 看看http://www.samisite.com/test-csb2nf/id43.htm

答案 3 :(得分:0)

最安全的方法是限制他们可以提交的标签,并验证/清理他们所做的标签,类似于我们在这里使用标记的方式。

将未经检查的HTML注入您的网页是一件麻烦事。

如果做不到这一点,那么老的iframe就会有所作为。

答案 4 :(得分:0)

好吧,我相信你可以做些什么,但可能需要一些时间。您可以使用解析器浏览用户html,获取标签及其内容,并重新创建html,使其保持干净。

但是,由于可以使用很多标签,甚至是发明标签,因此可以限制用户可以在其html中使用的标签。你把一个带有可接受标签的图例。

有一些非常好的html解析器用于php,但它们可能会破坏一些非常糟糕的html代码,所以这就是为什么我建议你只是使用有限的可接受标签子集进行解析来重新创建它。

我知道这是一个困难/耗时的解决方案,但这就是我的想法