1

我正在使用 TelerikRadToolTipManager控件在 html 控件上显示工具提示。(锚标记、跨度标签等)如下所示,在我.ascx的 asp.net 页面中

<telerik:RadToolTipManager OnClientBeforeShow="BeforeShow_Tootip" ID="BVAutoRadToolTipManager" runat="server" ToolTipZoneID="tooltipZoneDiv" Position="TopRight" HideDelay="500" AutoCloseDelay="10000" Skin="Vista" AutoTooltipify="True">
        </telerik:RadToolTipManager>

上面的代码在 IE 和 FF 中运行良好,并在我在标记中设置的 TopRight 显示提示Position="TopRight"

问题:现在,当我在其中打开我的页面时,Chrome第一次在页面加载时显示正确位置的工具提示。但是当我向下滚动页面时,工具提示位置远高于鼠标指针

你能否给我一个建议,当用户hover使用元素时,有什么方法可以正确设置位置。我们如何OnClientBeforeShow使用RadToolTipManager.

谢谢

任何帮助将不胜感激..!!

4

1 回答 1

2

这被报告为错误(Chrome 61 中 RadToolTip 的错误放置(位置))。解决方法是覆盖 _getPosRelativeToMouse 方法。

这个 Js 代码应该可以解决这个问题。

Telerik.Web.UI.RadToolTip.prototype._getPosRelativeToMouse = function (targetBounds) {
    var elemX = targetBounds.x;
    var elemY = targetBounds.y;

    //Get last recorded mouse position
    var pos = this._getMousePosition();
    var mouseX = pos.clientX;
    var mouseY = pos.clientY;

    //Take into consideration the offsetScroll!
    var standard = $telerik.standardsMode;
    //$telerik.standardsMode does not do a good job! Extra check is needed for FF!!
    //And yet another check needed for Safari! It should always be set to false in order to get the calculations right
    if (!$telerik.isIE && document.compatMode != "CSS1Compat") standard = false;
    else if ($telerik.isSafari && !(Telerik.Web.Browser.chrome && Telerik.Web.Browser.version >= 61)) standard = false;

    if (standard) {
        elemX -= $telerik.getCorrectScrollLeft(document.documentElement);
        elemY -= document.documentElement.scrollTop;
    }
    else //NEW: Add support for quircksmode
    {
        elemX -= $telerik.getCorrectScrollLeft(document.body);
        elemY -= document.body.scrollTop;
    }

    //Calculate the position of the mouse, relative to the targetcontrol
    var deltaX = mouseX - elemX;
    var deltaY = mouseY - elemY;

    return { x: deltaX, y: deltaY };
}
于 2017-11-14T23:34:26.643 回答