【问题标题】:Unable to show formatted HTML in Tooltip无法在工具提示中显示格式化的 HTML
【发布时间】:2020-02-10 21:29:48
【问题描述】:

我有一个现有的经典 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 是控件 ID(在本例中,它是第一行中的 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 专家,所以如果我有后续问题,请提前道歉。

【问题讨论】:

标签: javascript c# asp.net asp-classic tooltip


【解决方案1】:

此代码允许您在工具提示中包含 html。请根据需要更改 css 样式:

<!DOCTYPE html>
<html>
<style>
    .tooltip {
        position: relative;
        display: inline-block;
        border-bottom: 1px dotted black;
    }

        .tooltip .tooltiptext {
            visibility: hidden;
            width: 220px;
            background-color: #ffffff;
            text-align: center;
            border-radius: 6px;
            border: 1px;
            padding: 5px 0;
            position: absolute;
            z-index: 1;
            bottom: 125%;
            left: 50%;
            margin-left: -60px;
            opacity: 0;
            transition: opacity 0.3s;
        }

            .tooltip .tooltiptext::after {
                content: "";
                position: absolute;
                top: 100%;
                left: 50%;
                margin-left: -5px;
                border-width: 5px;
                border-style: solid;
                border-color: #555 transparent transparent transparent;
            }

        .tooltip:hover .tooltiptext {
            visibility: visible;
            opacity: 1;
        }

        .tooltip .tooltiptext TH {
            background-color: blue;
            color: #fff;
        }
</style>
<body style="text-align:center;">

    <h2>Tooltip</h2>
    <p>Move the mouse over the text below:</p>

    <div class="tooltip">
        Hover over me
        <span class="tooltiptext">
            <table>
                <tr>
                    <th>
                        SOMEONES NAME <br>on Monday, October 28, 2019
                        at 9:11:50 AM EST<br>
                    </th>
                </tr>
                <tr>
                    <td valign="top">
                        More data here
                    </td>
                </tr>
            </table>

        </span>
    </div>

</body>
</html>

几个想法: 也许您可以在创建链接时创建工具提示信息(而不是即时创建)。 当您将鼠标悬停在信息上时,您也可以使用 ajax 调用来获取信息。

这里找到的代码是使用 CSS 工具提示的好方法: https://www.w3schools.com/howto/howto_css_tooltip.asp

您似乎正在更改标题。原始代码更改了innerHTML。您仍然可以使用以下语法分配 div 的 innerHTML:

document.getElementById(RecordNum).innerHTML = "whatever";

我也是 jQuery 的忠实粉丝,它内置了许多 UI 功能: https://jqueryui.com/tooltip/

【讨论】:

  • 只是出于好奇,如果我在创建链接时构建了工具提示信息,它会显示为 HTML 还是纯文本?我仍然不确定标准控件工具提示是否可以处理纯文本以外的任何内容(即使使用 css),
  • 骗子,你摇滚!甚至没有考虑做一个 CSS 工具提示类并在 DIV 上使用它。我只是专注于使用 Tooltip 元素,它永远不会显示格式化的 HTML。我已经对其进行了编码,以便在对链接进行编码时使用您的解决方案。效果很好!谢谢你 !! (不确定如何关闭已解决的问题,我是否使用“回答您的问题”按钮?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
相关资源
最近更新 更多