有选择地从 Html 个源元素中删除标签
Tags Selectively Stripped From Html Elements from Source
我们有一个 asp.net 网络表单从数据库中提取标记并发送到浏览器以呈现为 html。
Html 被选择性地从 html 标签中删除,仅来自此标记的一部分,而是显示为纯文本。
我已经检查了源代码并且所有的标签都在那里,所以它不太可能是 asp 控制器的服务器问题(无论如何我都检查过,见下文)- 我已经检查了 [=] 的有效性40=] 在验证器上。w3c.org 并且浏览器不应删除任何无效内容。
webform 上的控制器是 asp:literal 所以我认为它可能处于错误的模式,但是我试过这个并且没有任何改进。此外,一些 html 无论如何都被正确渲染,所以这不太可能是问题。
我认为这可能与覆盖某些样式的网络请求有关,因为它最初呈现正确,但随着页面加载额外的绘画,从显示的页面中删除标签。网络选项卡中相关模块的预览也可以正确呈现。
好的,所以源码中的代码是:
<div class='classname class'>
<div class='classname'>
<div class='classname'><img id = 'myImg' src='https://imgurl.com' alt='A Description'></div>
</div>
<div class='classname'>
<h1>A Heading of My Subject</h1>
<p class='classname'>And then some more.</p>
</div>
<div id='myId'>
<div class='classname'>
<h1> A Heading of My Subject </h1>
<p>Stripping subject from text.</p>
<h2> A Secondary Heading for More Info</h2>
<p>An abstraction of my paragraph text.</p>
<h2> Another Secondary Heading </h2>
<p>Lorem Ipsum forever!</p>
<p>And yet another paragraph.</p>
</div>
</div>
</div>
实际呈现的 html 是:
<div class='classname class'>
<div class='classname'>
<div class='classname'><img id = 'myImg' src='https://imgurl.com' alt='A Description'></div>
</div>
<div class='classname'>
<h1>A Heading of My Subject</h1>
<p class='classname'>And then some more.</p>
</div>
<div id='myId'>
<div class='classname'>
" A Heading of My Subject
Stripping subject from text.
A Secondary Heading for More Info
An abstraction of my paragraph text.
Another Secondary Heading
Lorem Ipsum forever!
And yet another paragraph."
</div>
</div>
</div>
奇怪的是双引号也被添加了,不知道那里发生了什么。
相关的隐藏代码是:
Page.Title = Name + " - " + Var;
LocOutput.Append("<div class='classname'>" + Environment.NewLine);
LocOutput.Append("<div class='classname'>" + Environment.NewLine);
LocOutput.Append("<div class='classname'><img id='asd' src='" + imgurl + "' alt='" + imgdescription + "'></div>" + Environment.NewLine);
LocOutput.Append("</div>" + Environment.NewLine);
LocOutput.Append("<div class ='classname'><h1>" + Name + "</h1><p class='classname'>" + Name2 + "</p></div>" + Environment.NewLine);
LocOutput.Append("<div id = 'idNameo'><div class ='classname'>" + Content + "</div></div>" + Environment.NewLine);
if (myVar == "condition")
{
LocOutput.Append("<div id = 'idNameod2' value = '" + Var3+ "'></div>" + Environment.NewLine);
}
LocOutput.Append("</div>" + Environment.NewLine);
LocationDetails.Text = LocOutput.ToString();
剥离的 html 完全位于 Content 变量中。
控件是:
<asp:Literal ID="LocationDetails" runat="server"/>
在这种情况下,原因是一些 javascript 剥离 html 作为在 AJAX 调用之后插入数据的一部分:
var desc = $('#elemId').find('.more').text();
desc = desc.replace("(random data)", randomDataVar);
该方法正在访问内部文本,但在替换后将其插入回 innerHTML。
我直接访问 innerHTML 来解决这个问题:
var desc = document.getElementsByClassName('more')[0];
desc.innerHTML = desc.innerHTML.replace("(random data)", randomDataVar);
我们有一个 asp.net 网络表单从数据库中提取标记并发送到浏览器以呈现为 html。
Html 被选择性地从 html 标签中删除,仅来自此标记的一部分,而是显示为纯文本。
我已经检查了源代码并且所有的标签都在那里,所以它不太可能是 asp 控制器的服务器问题(无论如何我都检查过,见下文)- 我已经检查了 [=] 的有效性40=] 在验证器上。w3c.org 并且浏览器不应删除任何无效内容。
webform 上的控制器是 asp:literal 所以我认为它可能处于错误的模式,但是我试过这个并且没有任何改进。此外,一些 html 无论如何都被正确渲染,所以这不太可能是问题。
我认为这可能与覆盖某些样式的网络请求有关,因为它最初呈现正确,但随着页面加载额外的绘画,从显示的页面中删除标签。网络选项卡中相关模块的预览也可以正确呈现。
好的,所以源码中的代码是:
<div class='classname class'>
<div class='classname'>
<div class='classname'><img id = 'myImg' src='https://imgurl.com' alt='A Description'></div>
</div>
<div class='classname'>
<h1>A Heading of My Subject</h1>
<p class='classname'>And then some more.</p>
</div>
<div id='myId'>
<div class='classname'>
<h1> A Heading of My Subject </h1>
<p>Stripping subject from text.</p>
<h2> A Secondary Heading for More Info</h2>
<p>An abstraction of my paragraph text.</p>
<h2> Another Secondary Heading </h2>
<p>Lorem Ipsum forever!</p>
<p>And yet another paragraph.</p>
</div>
</div>
</div>
实际呈现的 html 是:
<div class='classname class'>
<div class='classname'>
<div class='classname'><img id = 'myImg' src='https://imgurl.com' alt='A Description'></div>
</div>
<div class='classname'>
<h1>A Heading of My Subject</h1>
<p class='classname'>And then some more.</p>
</div>
<div id='myId'>
<div class='classname'>
" A Heading of My Subject
Stripping subject from text.
A Secondary Heading for More Info
An abstraction of my paragraph text.
Another Secondary Heading
Lorem Ipsum forever!
And yet another paragraph."
</div>
</div>
</div>
奇怪的是双引号也被添加了,不知道那里发生了什么。
相关的隐藏代码是:
Page.Title = Name + " - " + Var;
LocOutput.Append("<div class='classname'>" + Environment.NewLine);
LocOutput.Append("<div class='classname'>" + Environment.NewLine);
LocOutput.Append("<div class='classname'><img id='asd' src='" + imgurl + "' alt='" + imgdescription + "'></div>" + Environment.NewLine);
LocOutput.Append("</div>" + Environment.NewLine);
LocOutput.Append("<div class ='classname'><h1>" + Name + "</h1><p class='classname'>" + Name2 + "</p></div>" + Environment.NewLine);
LocOutput.Append("<div id = 'idNameo'><div class ='classname'>" + Content + "</div></div>" + Environment.NewLine);
if (myVar == "condition")
{
LocOutput.Append("<div id = 'idNameod2' value = '" + Var3+ "'></div>" + Environment.NewLine);
}
LocOutput.Append("</div>" + Environment.NewLine);
LocationDetails.Text = LocOutput.ToString();
剥离的 html 完全位于 Content 变量中。
控件是:
<asp:Literal ID="LocationDetails" runat="server"/>
在这种情况下,原因是一些 javascript 剥离 html 作为在 AJAX 调用之后插入数据的一部分:
var desc = $('#elemId').find('.more').text();
desc = desc.replace("(random data)", randomDataVar);
该方法正在访问内部文本,但在替换后将其插入回 innerHTML。
我直接访问 innerHTML 来解决这个问题:
var desc = document.getElementsByClassName('more')[0];
desc.innerHTML = desc.innerHTML.replace("(random data)", randomDataVar);