У меня есть существующий сайт Classi c ASP, который я конвертирую в C # / ASP. NET. На этом устаревшем сайте они используют следующий код для отображения HTML данных (в отличие от простого текста) в качестве всплывающей подсказки. Существующий код форматирует некоторые таблицы, используя HTML, а затем использует устаревший метод, чтобы сделать их всплывающей подсказкой. Пример:
function EnterContent(layerName, TTitle, TContent, RecordNum) {
ContentInfo = '<table border="1" style="width: 200px; border-top-color: #808080; border-right-color: #808080; border-bottom-color: #808080; border-left-color: #808080; padding:0; border-spacing:0 ">' +
'<tr><td style="width: 100%; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000">' +
'<table border="0" style="width: 100%;padding: 0; border-spacing: 0; background-color: #C0C0C0">' +
'<tr><td style="width: 100%; border-top-color: ' + topColor + '; border-right-color: ' + topColor + '; border-bottom-color: ' + topColor + '; border-left-color: ' + topColor + '">' +
'<table style="width: 100%;padding :0;border-spacing: 0;text-align: center" >' +
'<tr><td style="width: 100%; background-color: #0000FF">' +
'<div class="tooltiptitle">' + TTitle + '</div>' +
'</td></tr>' +
'</table>' +
'</td></tr>' +
'<tr><td style="width: 100%; border-top-color: ' + subColor + '; border-right-color: ' + subColor + '; border-bottom-color: ' + subColor + '; border-left-color: ' + subColor + '">' +
'<table {padding:5} style="width: 100%;border-spacing: 0;text-align: center">' +
'<tr><td >' +
'<font class="tooltipcontent">' + TContent + '</font>' +
'</td></tr>' +
'</table>' +
'</td></tr>' +
'</table>' +
'</td></tr>' +
'</table>';
ReplaceContent(ContentInfo, RecordNum)
}
И вот как они это сделали в устаревшем коде:
function ReplaceContent(layerName){
if(ie){document.all[layerName].innerHTML = ContentInfo}
if(ns){
with(document.layers[layerName].document) {
open();
write(ContentInfo);
close();
}
}
}
Обратите внимание, что для заполнения всплывающей подсказки используются слои документа. Это не рекомендуется и не будет работать с современными браузерами. Вот что я придумал:
function ReplaceContent(ContentInfo, RecordNum) {
var HTMLElement = document.getElementById(RecordNum)
// alert(ContentInfo)
HTMLElement.title = ContentInfo
}
Такого рода работы. Он показывает всплывающую подсказку, но информация во всплывающей подсказке представляет собой обычный текст отформатированных таблиц HTML. Я не уверен, что вы даже можете успешно ввести HTML во всплывающую подсказку (я видел сообщения о том, что вы можете и не можете).
В моей версии RecordNum - это идентификатор элемента управления (в данном случае это TD в первой строке). Пример здесь:
<b>1.</td><td width="100%" ID= \"" + aActions[i,0] + "\" runat=\"server\ "><span onMouseover="EnterContent('ToolTip','New Assignment','<b>Action Taken by:</b>
<br>SOMEONES NAME<br>on Monday, October 28, 2019<br>at 9:11:50 AM EST<fieldset style=padding:2>
<legend><b>Comment</b>
</legend> SOMEONES NAME has been assigned as Person initiating the Help Call (Caller).</fieldset>'); Activate();"'
onmouseout="deActivate()">
Это вторая часть, которая открывает страницу ссылок (она работает правильно):
<a href="javascript:ActionDetail(2257126);"><font class="ActionName"><b>New Assignment</a></span> </font><br></font>
<span id="actionspan2" style="display=none;"><font class="ActionData"> SOMEONES NAME <br>on Monday, October 28, 2019<br>
at 9:11:50 AM EST<br></span>
</font></td></tr><tr><td width="19" valign="top"><center><font class="ActionData">
Вот как должна отображаться подсказка
Итак, моя проблема в том, что я могу получить правильный текст для всплывающей подсказки, но он не отображается в формате HTML. Я проверил код HTML, чтобы убедиться, что это не проблема. Я вставил его в страницу .aspx и убедился, что он отображается правильно. Я ни в коем случае не эксперт Javascript, поэтому заранее извиняюсь, если у меня возникнут дополнительные вопросы.