好的,所以基本问题在于设置div元素的innerHTML,除了Firefox之外,我的字符串中的任何html标记都被剥离(并且不显示)在所有主流浏览器中。现在对于catch,当页面首次加载时不会发生这种情况,它只发生在部分回发上(除非它的Firefox,然后它总是有效)。
我正在尝试运行一个脚本(实际上是通过ScriptManager从后面的代码中创建并添加)来向一些已经存在的html元素添加一些html元素(带有事件处理程序)。我知道脚本总是在运行,即使我有问题,因为我可以核实现有元素的html或设置一些文本。我甚至可以使用文本和标记,但是文本将不会呈现标记,除非文本在标记内。所以:
someElement.innerHTML =“Blah blah blah” - 作品
someElement.innerHTML =“<br/><br/>Blah blah blah<br/><br/>
”
Blah blah blah显示但没有休息
someElement.innerHTML =“<p>This will disappear</p><div>So will this</div>
”
所有文本都会随着标记一起消失。哦,我调查了这个'标准'方式,即document.createElement等,但我有完全相同的问题。
如果您需要/想知道其他任何事情,请询问。
编辑:当我说主流浏览器时,特别是我的意思:Safari 4.0.3,Chrome 3.0.195.27和IE 8.0.6
完整的javascript(与此功能相关)。如果有格式错误是因为这实际上是C#中的一个字符串,所以为了清楚起见,我试图删除一堆时髦的逃避废话。
var overflowEls = getElementsByClass("descriptionBox");
for (var i = 0; i < overflowEls.length; i++)
{
if (checkOverflow(overflowEls[i]))
{
var html = overflowEls[i].innerHTML;
overflowEls[i].innerHTML = overflowEls[i].innerHTML = "<div class="videoFeedDescriptionButtons" onclick="expand(this);">+</div><br/><div onclick="collapse(this);" class="videoFeedDescriptionButtons">-</div>" + html;
}
}
周围的html,请记住它是从youtube Feed中提取的,然后由.net转发器控件生成:
<td valign="top" style="margin: 5px 5px 5px 5px;height:auto;">
<div class="descriptionBox" style="max-height:100px; overflow:hidden;" >
<b>
THE WORLDS BIGGEST PLANES!! by kieran smith</b><br />
<br />
by Antonov (ASTC). It was designed for the Soviet space program as a replacement for the Myasishchev M-4 'Bison' for the purpose of carrying the Energia rocket boosters and to also be able to carry the Buran space shuttle in piggy-back mode much the same as the American Shuttle Carrier Aircraft.The An-225 first flew on 21 December, 1988. Only one An-225 is currently in service. It is commercially available for carrying ultra heavy and/or oversize freight. It can carry up to 227 metric ...<br />
</div>
<a id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_lnView" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Repeater1$ctl01 $lnView','')">View</a> <a id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_lnAdd"
href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Repeater1$ctl01$lnAdd','')">Add</a>
<br />
答案 0 :(得分:0)
也许你的CSS中可能有#someElement * { display: inline !important }
或类似内容。
答案 1 :(得分:0)
原来,剧本管理员不知何故多次将该脚本添加到页面中。有点。我说的有点因为它输出的脚本中还有一些C#格式化的东西。这是它的样子:
<script type="text/javascript">
"var overflowEls = getElementsByClass("descriptionBox"); for (var i = 0; i < overflowEls.length; i++) { if (checkOverflow(overflowEls[i])) { var html = overflowEls[i].innerHTML; overflowEls[i].innerHTML = overflowEls[i].innerHTML = "
<div class="\"onclick="\">+</div>
<div onclick="\"collapse(this);\""class="\"videoFeedDescriptionButtons\"">-</div>
"" + html;}}"
</script>
正如你所看到的,一团糟。无论如何,我通过将脚本作为函数移动到aspx页面并且让scriptmanager输出对函数的调用来解决这个问题,所以现在我在html头中有越来越多的函数调用脚本。该脚本现在可以正常工作,所以我打算将其标记为已回答,并打开一个新问题,试图找出脚本管理器添加重复项的原因。