{"action":"created","issue":{"url":"https://api.github.com/repos/handsontable/handsontable/issues/2241","labels_url":"https://api.github.com/repos/handsontable/handsontable/issues/2241/labels{/name}","comments_url":"https://api.github.com/repos/handsontable/handsontable/issues/2241/comments","events_url":"https://api.github.com/repos/handsontable/handsontable/issues/2241/events","html_url":"https://github.com/handsontable/handsontable/issues/2241","id":60542023,"number":2241,"title":"When There is too much rows, the scrollbar drag to the very outside below is not properly.","user":{"login":"lygstate","id":121040,"avatar_url":"https://avatars.githubusercontent.com/u/121040?v=3","gravatar_id":"","url":"https://api.github.com/users/lygstate","html_url":"https://github.com/lygstate","followers_url":"https://api.github.com/users/lygstate/followers","following_url":"https://api.github.com/users/lygstate/following{/other_user}","gists_url":"https://api.github.com/users/lygstate/gists{/gist_id}","starred_url":"https://api.github.com/users/lygstate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lygstate/subscriptions","organizations_url":"https://api.github.com/users/lygstate/orgs","repos_url":"https://api.github.com/users/lygstate/repos","events_url":"https://api.github.com/users/lygstate/events{/privacy}","received_events_url":"https://api.github.com/users/lygstate/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-03-10T18:00:41Z","updated_at":"2015-03-11T10:59:23Z","closed_at":null,"body":"Using the following code, and dragging the scrollbar by mouse to the very button, out of the \r\ngrid. then the scrollbar thumb jump to the top of the scrollbar.\r\n```\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n  <meta name=\"description\" content=\"Handsontable Test\" />\r\n  <meta charset=\"utf-8\">\r\n  <title>Handsontable Test</title>\r\n\r\n  <!-- CSSes to support Handsontable -->\r\n  <link rel=\"stylesheet\" href=\"bower/normalize.css/normalize.css\" -->\r\n  <link rel=\"stylesheet\" media=\"screen\" href=\"bower/handsontable/dist/handsontable.full.css\">\r\n\r\n  <!-- Handsontable and dependencies -->\r\n  <script src=\"bower/handsontable/dist/handsontable.full.js\"></script>\r\n\r\n  <style>\r\n    /* Put your CSS here */\r\n    html, body {\r\n      margin: 20px;\r\n    }\r\n  </style>\r\n</head>\r\n\r\n<body>\r\n<div id=\"rich\" style=\"width:800px; height: 300px; overflow: auto\"></div>\r\n  <script>\r\nvar data = [\r\n    {\r\n      title: \"<a href='http://www.amazon.com/Professional-JavaScript-Developers-Nicholas-Zakas/dp/1118026691'>Professional JavaScript for Web Developers</a>\",\r\n      description: \"This <a href='http://bit.ly/sM1bDf'>book</a> provides a developer-level introduction along with more advanced and useful features of <b>JavaScript</b>.\",\r\n      comments: \"I would rate it &#x2605;&#x2605;&#x2605;&#x2605;&#x2606;\",\r\n      cover: \"http://ecx.images-amazon.com/images/I/51bRhyVTVGL._SL50_.jpg\"\r\n    },\r\n    {\r\n      title: \"<a href='http://shop.oreilly.com/product/9780596517748.do'>JavaScript: The Good Parts</a>\",\r\n      description: \"This book provides a developer-level introduction along with <b>more advanced</b> and useful features of JavaScript.\",\r\n      comments: \"This is <big>the</big> book about JavaScript\",\r\n      cover: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._SL50_.jpg\"\r\n    },\r\n    {\r\n      title: \"<a href='http://shop.oreilly.com/product/9780596805531.do'>JavaScript: The Definitive Guide</a>\",\r\n      description: \"<em>JavaScript: The Definitive Guide</em> provides a thorough description of the core <b>JavaScript</b> language and both the legacy and standard DOMs implemented in web browsers.\",\r\n      comments: \"I've never actually read it, but the <a href='http://shop.oreilly.com/product/9780596805531.do'>comments</a> are highly <strong>positive</strong>.\",\r\n      cover: \"http://ecx.images-amazon.com/images/I/51VFNL4T7kL._SL50_.jpg\"\r\n    }\r\n  ];\r\n\r\nvar container1 = document.getElementById('rich');\r\ncontainer1.style.height = 400 + 'px';\r\ncontainer1.style.overflow = 'auto';\r\nfor (var i = 0; i < 10000; ++i) {\r\n  data.push(data[0]);\r\n}\r\nvar hot1 = new Handsontable(container1, {\r\n  data: data,\r\n  colWidths: [200, 200, 200, 60],\r\n  colHeaders: [\"Title\", \"Description\", \"Comments\", \"Cover\"],\r\n  columns: [\r\n    {data: \"title\", renderer: \"html\"},\r\n    {data: \"description\", renderer: \"html\"},\r\n    {data: \"comments\", renderer: safeHtmlRenderer},\r\n    {data: \"cover\", renderer: coverRenderer}\r\n  ]\r\n});\r\n\r\n// original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\r\nfunction strip_tags(input, allowed) {\r\n  var tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi,\r\n    commentsAndPhpTags = /<!--[\\s\\S]*?-->|<\\?(?:php)?[\\s\\S]*?\\?>/gi;\r\n\r\n  // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)\r\n  allowed = (((allowed || \"\") + \"\").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('');\r\n\r\n  return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {\r\n    return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';\r\n  });\r\n}\r\n\r\nfunction safeHtmlRenderer(instance, td, row, col, prop, value, cellProperties) {\r\n  var escaped = Handsontable.helper.stringify(value);\r\n  escaped = strip_tags(escaped, '<em><b><strong><a><big>'); //be sure you only allow certain HTML tags to avoid XSS threats (you should also remove unwanted HTML attributes)\r\n  td.innerHTML = escaped;\r\n\r\n  return td;\r\n}\r\n\r\nfunction coverRenderer (instance, td, row, col, prop, value, cellProperties) {\r\n  var escaped = Handsontable.helper.stringify(value),\r\n    img;\r\n\r\n  if (escaped.indexOf('http') === 0) {\r\n    img = document.createElement('IMG');\r\n    img.src = value;\r\n\r\n    Handsontable.Dom.addEvent(img, 'mousedown', function (e){\r\n      e.preventDefault(); // prevent selection quirk\r\n    });\r\n\r\n    Handsontable.Dom.empty(td);\r\n    td.appendChild(img);\r\n  }\r\n  else {\r\n    // render as text\r\n    Handsontable.renderers.TextRenderer.apply(this, arguments);\r\n  }\r\n\r\n  return td;\r\n}\r\n  </script>\r\n</body>\r\n</html>\r\n```"},"comment":{"url":"https://api.github.com/repos/handsontable/handsontable/issues/comments/78242753","html_url":"https://github.com/handsontable/handsontable/issues/2241#issuecomment-78242753","issue_url":"https://api.github.com/repos/handsontable/handsontable/issues/2241","id":78242753,"user":{"login":"AMBudnik","id":10757813,"avatar_url":"https://avatars.githubusercontent.com/u/10757813?v=3","gravatar_id":"","url":"https://api.github.com/users/AMBudnik","html_url":"https://github.com/AMBudnik","followers_url":"https://api.github.com/users/AMBudnik/followers","following_url":"https://api.github.com/users/AMBudnik/following{/other_user}","gists_url":"https://api.github.com/users/AMBudnik/gists{/gist_id}","starred_url":"https://api.github.com/users/AMBudnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AMBudnik/subscriptions","organizations_url":"https://api.github.com/users/AMBudnik/orgs","repos_url":"https://api.github.com/users/AMBudnik/repos","events_url":"https://api.github.com/users/AMBudnik/events{/privacy}","received_events_url":"https://api.github.com/users/AMBudnik/received_events","type":"User","site_admin":false},"created_at":"2015-03-11T10:59:23Z","updated_at":"2015-03-11T10:59:23Z","body":"I tried to reproduce it with your code, but it looks fine. Can you provide a video demo of your issue, maybe I'm misunderstanding this problem."}}