// Answer to... // https://github.com/Inversion-des/Habrahabr--Answer-to // ==UserScript== // @name Answer to... // @description Shows the comment for which this comment is an answer // @namespace Habrahabr // @version 1.3.10 // @include https://geektimes.com/* // @include https://habr.com/* // @supportURL https://github.com/Inversion-des/Habrahabr--Answer-to/issues // @downloadURL https://update.greasyfork.icu/scripts/32342/Answer%20to.user.js // @updateURL https://update.greasyfork.icu/scripts/32342/Answer%20to.meta.js // ==/UserScript== /* класс стрелочки вверх — up-to-parent href — #comment_1706843 ID ответа — comment_1706843 класс заголовка — div info класс тела — div message */ "use strict"; !function(win) { if (window != window.top) return var doc = win.document win.addEventListener("load", function() { var comments_cont = doc.getElementById('comments') if (comments_cont) { var msgStyle = "\ background-color:white;\ padding:3px 2px 0 5px;\ position:absolute;\ z-index:1;\ overflow-y:auto;\ -webkit-box-shadow: 0px 3px 12px 3px rgba(0, 0, 0, 0.3);\ -moz-box-shadow: 0px 3px 12px 3px rgba(0, 0, 0, 0.3);\ box-shadow: 0px 3px 12px 3px rgba(0, 0, 0, 0.3);" // готовим контейнер для просмотра win.msgContainer_cont = doc.createElement("div") win.msgContainer_cont.className = "content-list__item_comment comments_list_answerTo" win.msgContainer_cont.innerHTML = '
' win.msgContainer_cont.style.cssText = "position:fixed;top:0px;left:0px;display:none;z-index:99;margin:0 !important;padding:0 !important;overflow:visible;text-align:left;" doc.body.appendChild(win.msgContainer_cont) win.msgContainer = win.msgContainer_cont.firstChild // прописываем ховер стрелочкам всех комментов var arrows = comments_cont.getElementsByClassName('js-comment_parent') $.each(arrows, activateArrow) // таймер для активации новых комментариев setInterval(function() { var $ = win.jQuery if ($) { var newComments = $('.comment .is_new .to_parent') for (var i=0, li=newComments.length; iwindowScrollPos ? targetTop-windowScrollPos-3 +'px' : 0 // height auto adjustment if (targetTop0 ? targetCommentHeight-delta +'px' : '' } else { win.msgContainer.style.maxHeight = '' } // показываем win.msgContainer.parentNode.style.display = "block" // отступы win.msgContainer.style.marginLeft = absLeft(target)-5+'px' win.msgContainer.style.width = win.msgContainer.parentNode.offsetWidth-parseInt(win.msgContainer.style.marginLeft)+'px' } // showTargetComment function hideTargetComment() { win.msgContainer.parentNode.style.display = "none" } function absLeft(o) { var l = 0 do { if (o.offsetLeft) l += o.offsetLeft-o.scrollLeft; } while (o = o.offsetParent) return l } function absTop(o) { var l = 0 do { if (o.offsetTop) l += o.offsetTop-o.scrollTop; } while (o = o.offsetParent) return l } }(typeof unsafeWindow == 'undefined' ? window : unsafeWindow)