Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML未在div内格式化生成错误_Javascript_Html_Coldfusion - Fatal编程技术网

Javascript HTML未在div内格式化生成错误

Javascript HTML未在div内格式化生成错误,javascript,html,coldfusion,Javascript,Html,Coldfusion,我有一个cfm(ColdFusion)页面,在该页面中,我在div中显示一个#userHTML#变量的内容 <cfoutput> <div class="panel panel-default" style="margin-left: 20px; margin-right: 20px;"> <div id="myDiv" class="panel-body"> #userHTML#

我有一个cfm(ColdFusion)页面,在该页面中,我在div中显示一个
#userHTML#
变量的内容

<cfoutput>
    <div class="panel panel-default" style="margin-left: 20px; margin-right: 20px;">
        <div id="myDiv" class="panel-body">                
            #userHTML#
        </div>
    </div>

    <br/><br/>
    <div class="col-sm-8 col-sm-offset-2">
        <!-- Some Code Here -->
    </div>
</cfoutput>

#用户HTML#


有时
#userHTML#
变量包含无效的HTML。它可能包含未关闭的打开的
标记,这使得我拥有的
代码的其余部分位于顶部div内(
id=“myDiv”


有没有一种方法可以使这项工作不受
#userHTML#
变量包含的内容的影响,它总是将其内容放在div
“myDiv”
中?

浏览器设计为以本机方式解析该HTML。如果您需要XML,它将应用XML规则,导入格式不正确的XML将出错。如果您使用HTML,它将尽其所能自动更正错误(就像所有HTML文档一样)

要实现这一点,您可以执行以下操作(请参见代码中的注释):

//创建新的HTML文档(DOM)
var doc=document.implementation.createHTMLDocument(“”,'html',null);
//添加主体
var body=document.createElements(''body');
//将主体放入DOM中
doc.documentElement.appendChild(body);
//对正文进行分析/更正
body.innerHTML=“这是一个测试”;
//现在将该内容放入现有DOM中
document.getElementById('test').innerHTML=body.innerHTML;
//摆脱多余的DOM
doc=null;

Test Div
浏览器旨在以本机方式解析该HTML。如果您需要XML,它将应用XML规则,导入格式错误的XML将出错。如果您使用HTML,它将尽其所能自动更正错误(与所有HTML文档一样)

要实现这一点,您可以执行以下操作(请参见代码中的注释):

//创建新的HTML文档(DOM)
var doc=document.implementation.createHTMLDocument(“”,'html',null);
//添加主体
var body=document.createElements(''body');
//将主体放入DOM中
doc.documentElement.appendChild(body);
//对正文进行分析/更正
body.innerHTML=“这是一个测试”;
//现在将该内容放入现有DOM中
document.getElementById('test').innerHTML=body.innerHTML;
//摆脱多余的DOM
doc=null;

testdiv
您可以使用
JSOUP
清除该HTML。 从或中获取相关的JAR文件,并将其放入您的
lib
文件夹中

然后使用JSOUP-like

<cfset oJSOUP = CreateObject("java", "org.jsoup.Jsoup" )>
<cfset oJSOUPWL = CreateObject("java", "org.jsoup.safety.Whitelist" ).init()>
#oJsoup.clean( 
    javaCast( "string", userHTML ), 
    "http://example.com/", 
    oJSOUPWL.relaxed().preserveRelativeLinks( true ) 
)#

#清汤(
javaCast(“字符串”,userHTML),
"http://example.com/", 
oJSOUPWL.released().PreserveRelativeLink(true)
)#

这将删除不需要的HTML,如未关闭的div。

您可以使用
JSOUP
清除该HTML。 从或中获取相关的JAR文件,并将其放入您的
lib
文件夹中

然后使用JSOUP-like

<cfset oJSOUP = CreateObject("java", "org.jsoup.Jsoup" )>
<cfset oJSOUPWL = CreateObject("java", "org.jsoup.safety.Whitelist" ).init()>
#oJsoup.clean( 
    javaCast( "string", userHTML ), 
    "http://example.com/", 
    oJSOUPWL.relaxed().preserveRelativeLinks( true ) 
)#

#清汤(
javaCast(“字符串”,userHTML),
"http://example.com/", 
oJSOUPWL.released().PreserveRelativeLink(true)
)#

这将删除不需要的HTML,如未关闭的div。

用户HTML的数据来自哪里?我使用tinymce文本编辑器,用户可以在其中创建数据,因此它来自存储在数据库中的HTML数据。tinymce编辑器不应该为您强制执行关闭标记吗?您需要保留该格式还是可以删除关闭标记从内容中删除HTML标记?我认为您不想尝试在代码中处理每种可能的情况。这就是为什么我让您使用tinymce。它是为您设计的。您可以使用类似于
EncodeForHTML()的函数
保护您的代码不受该变量内容的影响,但会丢失HTML格式。不,DIV中没有限制,但对来自数据库的查询数据有限制。请检查您的数据源以确保它与数据库的数据类型匹配。
userHTML
的数据来自哪里?我使用tinymce文本编辑器,我的用户可以在其中创建数据,因此它来自存储在数据库中的HTML数据tinymce编辑器不应该为您强制执行结束标记吗?您需要保留该格式还是可以从内容中删除所有HTML标记?我认为您不想尝试处理代码中的每种可能情况。这就是为什么我要将您转到tinymce。它是为您设计的。您可以使用
EncodeForHTML()之类的函数
保护代码不受该变量内容的影响,但会丢失HTML格式。不,DIV中没有限制,但数据库中的查询数据有限制。请检查数据源以确保它与数据库的数据类型匹配。