Completed
Last Updated: 30 Nov 2017 08:39 by ADMIN
ADMIN
Rumen
Created on: 26 Oct 2017 07:46
Category: ToolTip
Type: Bug Report
2
Wrong placement (position) of RadToolTip in Chrome 61 and Edge
Problem:

With the latest version of Google Chrome 61 the tooltip is not positioning correctly when the page is scrolled down.

Details: 

The tooltip positioning problem is due to the following breaking change in Chrome 61 (see release notes at https://blog.chromium.org/2017/08/chrome-61-beta-javascript-modules.html):

To align with the spec and preserve browser consistency, the scrollingElement is now the documentElement in standards mode.
Chrome 61 has changed the behavior of document.scrollingElement to return document.documentElement instead of document.body to match the CSSOM View specification and this broke the positioning of the tooltip.

Solution:

Use the _getPosRelativeToMouse override to solve the problem:

<telerik:RadGrid ID="RadGrid" runat="server"></telerik:RadGrid>
<telerik:RadToolTipManager ID="RadToolTipManager1" AutoTooltipify="true" runat="server">
</telerik:RadToolTipManager>
   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)) || (Telerik.Web.Browser.edge && Telerik.Web.Browser.version >= 15)) 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 };
             }
0 comments