Показать сообщение отдельно
  #15 (permalink)  
Старый 14.12.2017, 07:27
Интересующийся
Отправить личное сообщение для Nikifor Посмотреть профиль Найти все сообщения от Nikifor
 
Регистрация: 22.11.2017
Сообщений: 10

Ошибка в моём коде
Обнаружил только сейчас:
Фрагмент кода в функциях, для создания и вывода окна, нужно заменить на:
//получение вьюпорта (видимой части окна браузера), и координат щелчка мыши, с учётом прокрутки и без
  var i_html = document.documentElement;
  var i_viewport_w=i_html.clientWidth;  //длина видимой части
  var i_viewport_h=i_html.clientHeight; //высота
  var i_scroll_X=window.pageXOffset;    //расстояние до левого края экрана с учётом прокрутки
  var i_scroll_Y=window.pageYOffset;    //до верхнего
  var i_clX=pp_e.clientX;  //расстояние в пикселях от левого края экрана
  var i_clY=pp_e.clientY;  //верхнего
  var i_pageX=pp_e.pageX;  //..страницы
  var i_pageY=pp_e.pageY;
  var i_showX=i_showY=-1;
  //корректировка положения и размеров блока сообщения в зависимости от того где нажато и влезает ли оно
  if(i_viewport_w<(pp_w+20)) {pp_w=i_viewport_w-20; i_showX=i_scroll_X+10;} //если переданный размер заведомо > (<)
  if(i_viewport_h<(pp_h+20)) {pp_h=i_viewport_h-20; i_showY=i_scroll_Y+10;}
  if(i_showX==-1) {if(i_clX+pp_w<i_viewport_w) i_showX=i_pageX;     //если места хватает, то сообщение выводится с того
                   else {if(i_clX>pp_w) i_showX=i_pageX-pp_w;       //места, где щёлкнуто, иначе до него, но тоже, если 
                         else i_showX=i_scroll_X+i_viewport_w-pp_w;}}      //хватит места, иначе с минимальным смещением влево
  if(i_showY==-1) {if(i_clY+pp_h<i_viewport_h) i_showY=i_pageY;     //и так же по высоте.
                   else {if(i_clY>pp_h) i_showY=i_pageY-pp_h;
                         else i_showY=i_scroll_Y+i_viewport_h-pp_h;}}
  //Создаётся окно сообщения

По верхней и нижней части кода видно с какого по какое место нужно производить замену.
Ошибка была в том, что вывод окна был без учёта прокрутки, и координаты рассчитывались только по видимой части экрана, теперь они считаются с прокруткой и окно выводится правильно.

По поводу тревожного звоночка, про что писал человек с шестерёнкой, я тут ещё подумал и нашёл таки истину. Всё таки это не верно. Придумывание новых слов, как и чего-то нового, если оно лучше того что было, то это не плохо. Сродни изобретению. Держаться же за старое, плохого качества, это как консерватизм без смысла - признак закостенелости, не гибкости ума и мышления. Всё-таки творческое мышление лучше. Поэтому тревожиться тут нечего ) нормальное явление. Слово барадатер конечно коряво звучит. Но дак оно производное от слова браузер, поэтому такое, но всё же получше его, так что... не надо фафа-ляля - биби задавит.
Ответить с цитированием