Telerik RadToolTipManager工具提示位置在Chrome中不正确

时间:2017-11-08 06:54:27

标签: jquery asp.net telerik rad-controls kendo-tooltip

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

<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中显示tootip,因为我在标记中设置了Position="TopRight"

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

请您给我一个建议:当用户hover元素时,有没有办法正确设置位置。我们如何使用OnClientBeforeShow RadToolTipManager 事件设置排名。

谢谢

非常感谢任何帮助.. !!

1 个答案:

答案 0 :(得分:1)

这被报告为错误(Wrong placement (position) of RadToolTip in Chrome 61)。解决方法是覆盖_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 };
}