さて、基本的な問題はdiv要素のinnerHTMLを設定することです。私の文字列にあるすべてのhtmlマークアップは、Firefoxを除くすべての主要なブラウザーで削除されます(表示されません)。キャッチのために、これはページが最初にロードされたときに発生せず、部分的なポストバックでのみ発生します(Firefoxでない限り、常に機能します)。
スクリプト(実際にはScriptManagerを介してコードビハインドから作成および追加されている)を実行して、いくつかのhtml要素(イベントハンドラーを含む)を既存のhtml要素に追加しようとしています。既存の要素のhtmlを削除したり、テキストを設定したりできるため、問題が発生した場合でも、スクリプトが常に実行されていることはわかっています。テキストとマークアップを含めることもできますが、テキストがマークアップ内にない限り、テキストがレンダリングされる間、マークアップはレンダリングされません。それで:
someElement.innerHTML = "Blahblahblah"-動作します
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、およびIE8.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フィードから取得され、.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 />