Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Открыть новую тему     Написать ответ в эту тему

VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
Цитата:
не могу понять, как его выделить:

Код:
document.querySelector('div[data-bind="scope: \'messages\'"]')


Цитата:
сам родитель можно нормально выделить, 2 класса у него есть

https://jpegshare.net/images/06/69/06692a4c26ffbe2d70402bc7ac4d45f5.png

Код:
document.querySelector("span.class1.class2 div[data-bind]")

Можно по наличию совпадения:
Код:
document.querySelector("div[data-bind*='messages']")

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 17:02 29-08-2019 | Исправлено: VVL99, 17:39 29-08-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99

Код:
document.querySelector('div[data-bind="scope: \'messages\'"]')

блин, ну первым делом же пробовал экранировать... причем ошибок в консоли не было кроме что переменная не определена...  
сегодня с утра сработало, спасибо...

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 11:06 30-08-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
прошу вернуться плз если не сложно к вопросу -  
 
манипуляции с collapsible.js к результаму не привели, bootstrap похоже тоже не причем - во всяком случае, эти возможные причины проверены тщательно, и не только мной.
 
Подумалось вот о чем. Может какое-то событие можно попробовать добавить в addEventListener?
Пока приходит только довольно сложный вариант - отслеживать у-координату таба на экране, и по клику в addEventListener принудительно это значение - но может есть более простое решение?
 
upd
Ну вот такой примерно костыль имею в виду - если кто посмотрит еще раз на страницу, где скачут табы.
 
Добавляю обработку -  
 

Код:
  function message() {
  var top = this.getBoundingClientRect().top;
  if (top == 0) {
   window.scrollTo({ top: 400});
  }
  }
  [].forEach.call(document.querySelectorAll('#tab-label-description, #tab-label-additional, #tab-label-productattach'), function(el)  {  
  el.addEventListener('click', message)})
 

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

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 10:44 10-09-2019 | Исправлено: Weinaum, 12:34 10-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
манипуляции с collapsible.js к результаму не привели,

я не знаю какие вы там манипуляции совершали, я вам указал на конкретный кусок кода, что вызывает эту прокрутку.  сначала прокручивается вверх, потом отображается новое содержимое таба. удалите кусок из первоначального файла или сделайте, чтобы if не выполнялся (добавив в него false &&, к примеру)
вот вам форматированный файл для игр
 

Код:
        activate: function() {
            if (this.options.disabled) {
                return;
            }
            if (this.options.animate) {
                this._animate(showProps);
            } else {
                if (false && this.content.length) {
                    this._scrollToTopIfVisible(this.content.get(0).parentElement);
                }
                this.content.show();
            }
            this._open();
        },

 
либо можно переопределить метод виджета, сейчас гляну, сработает ли. в принципе можно, но неудобно, переделывать в других местах придется.

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 21:42 10-09-2019 | Исправлено: Mavrikii, 21:51 10-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо, все работает!  
По поводу манипуляций - у magento довольно сложная структура файлов, я тупо искал по всей иерархии js файлы с названием collapsible - таких файлов само ядро magento содержит аж 4.  
Из них первые 2 гораздо меньше и отличаются от искомого по содержимому, и разные между собой, а еще 2 - большие, одинаковые между собой и включают в себя искомый код. И вот поначалу, найдя первый совпадающий файл, я тупо до второго не дошел... однозначно мой косяк..
В статику деплойятся 2 файла, один из маленьких, и один из больших.  
Ну вот я вообще удалял кусок кода, выключал вообще файл - никакой реакции, вообще не было.  
Только сейчас я еще раз внимательно все разобрал, и вот увидел второй файл, и после нужных изменений все работает как надо.  
Еще раз спасибо )

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 11:17 12-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Скажите, мастер, как вы отловили, что именно в этом файле находится причина? Т.е. ведь ошибки не происходит, в консоли чисто,  а в ресурсах там такое количество файлов, как понять, в каком именно файле происходит та или иная обработка?
Если бы была ошибка или известен конкретный файл, то все понятно, пользоваться дебаггером в хроме чтобы найти место, вызывающее ошибку, или то или иное действие, проблем вроде особых нет.
Но блин, как среди такого числа скриптов обнаружить нужный с точностью 100%!
Просто вот на том же самом сайте происходит похожий скролл, только теперь уже не вверх, а вниз, и не связано с этими либо с другими табами: происходит строго после смены или добавления нового адреса доставки в процессе чекаута после клика по подтверждающей кнопке "изменить".  
Баг в самом высоком приоритете, хотелось бы разобраться, так как, во-первых, самому интересно, во-вторых, вряд ли кто то за меня будет на чужом сайте делать заказы для отслеживания бага ))

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 15:35 13-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
Панель разработчика в браузере, анализ о работников событий. Далее установка брейкпоинтов в нужных местах и пошаговый дебаг скрипта  - это все делается прямо в браузере.

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 17:12 13-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Вот первая часть - анализ обработчиков событий - для меня и составляет трудность.  
Если уже ясно какой файл то поставить брейкпойнты и отдебажить уже дело техники.
Т.е. я или не вижу в панели, как отслеживать события, или они отслеживаются не в панели?

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 08:54 16-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
или они отслеживаются не в панели?

я же показывал на скриншоте ранее. есть закладка Listeners

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 19:41 16-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Да, спасибо, хорошо, если не возражаете, просто для примера, вернемся к скроллу по клику на таб.  
Я вижу, и на вашем скрине, и реально во вкладке event listeners список скриптов, в которых есть обработка кликов на этой странице.  
Собственно, что я там вижу: jquery, bootstrap, скрипты на странице да от mouseflow - а файла collapsible.min.js - нет.  
Но ведь каким то образом вы его определили?

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 10:17 17-09-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снова вопрос по этому таймеру. Иногда почему-то появляется точка сбоку круга (скрин), обычно слева, на секундах и микросекундах. Особенно это заметно на белом фоне и толщине круга от 10px. Все настройки толщины колец, цвета и прочего находятся в JS. Подскажите, пожалуйста, как исправить?

Всего записей: 3440 | Зарегистр. 30-06-2002 | Отправлено: 17:03 17-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
у каждого элемента свой набор слушателей. начинаем от нужного и поднимаемся вверх по родителям, изучая только те события, что нам нужны.
 
WONDROUS
сколько ни пробовал - все ок.  это может быть глюк отрисовки движком браузера, особенно если идет увеличение страницы. лучше бы еще и браузер упомянуть.

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 19:59 17-09-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
В Хром и Опере последних версий нормально всё, пробовал с разной толщиной кругов. В Сафари 11 это проявляется и в Фоксе 53 (последних версий нет, чтобы проверить).

Всего записей: 3440 | Зарегистр. 30-06-2002 | Отправлено: 22:40 17-09-2019 | Исправлено: WONDROUS, 23:32 17-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS
ну так значит это проблема рендеринга браузерного движка.

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 23:21 17-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
ну вот, единственное, что вывело меня на этот файл при анализе обработчиков - это tabs.min.js, но он не под click событиями, а под beforeOpen.  
То да, если на него вышел, то становится очевидным где искать.  
В принципе конечно все логично, но получается, что для того чтобы найти проблему клика, прошерстить приходится не только клик, но и другие события...
Я просто думал, что есть какой то более простой способ, более наглядный, что ли.. ну то есть делаешь клик по элементу и видишь какие обработчики сработали, после чего уже дебажишь нужные..

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 10:21 18-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
beforeOpen это пользовательское событие, не оригинальное.
Может быть не только клик, но и mousedown или mouseup
 
А отловить какой именно обработчик мешает или обрабатывает нужный эффект легко - их же можно удалять и смотреть что происходит. Либо вызывать самостоятельно через trigger из консоли.

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 11:34 18-09-2019 | Исправлено: Mavrikii, 11:38 18-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Эх, было бы так легко, вы бы тут без вопросов были ))
Надеюсь, с опытом придет )

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 16:36 19-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
снова пару вопросов появилось.
На странице имеется форма, форма эта в dom-е присутствует, но по дефолту скрыта display:none,   и подгружается аяксом после клика по некоторой кнопке.  
Хочу внести небольшое изменение в обработку отправления уже загруженной формы - т.е. форма подгрузилась аяксом, ее заполнили и после клика на "изменить" или "отмена" я хочу чуть изменить результат.
С кодом, что я хочу сделать, проблем нет, он простой, проверено в консоли - все ок

Код:
$.each($('.some-button'), (index, el) => {  
      $(el).on('click', () => {
       тут нужная мне обработка;
      });
    })

 но он не работает, если я пытаюсь его вызвать из файла извне данной формы - т.е. у меня есть один custom.js , в котором как обычно собраны все пользовательские скрипты. Все они нормально отрабатывают, кроме вот этого последнего.
При этом данный код нормально работает, если его вставить непосредственно в файлы формы.  
Как я понимаю, дело именно в аяксе. Не хотелось бы все таки вносить изменения в дефолтные файлы ядра cms, можно ли как то все таки заставить работать код извне?
 
 
И второй вопрос, покороче.  
Можно ли как то псевдо-элемент before или after сделать ссылкой, если это псевдоэлемент не ссылки? Например, я подгружаю лого как background для befor к ul списку меню - можно как то сделать так, чтобы это лого стало нужной мне ссылкой?
 

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 09:33 30-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
все таки заставить работать код извне

Этот файл грузится с другого домена? Или как вы его подключение, как вызываете? Что говорит консоль браузера?
 

Цитата:
лого стало нужной мне ссылкой?

Нет, это не задача css.

Всего записей: 15700 | Зарегистр. 20-09-2014 | Отправлено: 13:05 30-09-2019 | Исправлено: Mavrikii, 14:11 30-09-2019
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
нет, с этого же домена - этот файл подключается ко всем страницам сайта, принудительно.  
В консоли нет никаких ошибок - что интересно, что скрипт может сработать раза 2 из 10, при этом никакой закономерности я не увидел.
Файлы формы, которая грузится аяксом, конкретно файл js, подключается только тогда, когда форма уже загружена, и скорее всего в этом проблема...
По второму разобрался уже, что так нельзя и сделал как можно )

Всего записей: 2155 | Зарегистр. 18-06-2006 | Отправлено: 16:15 30-09-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru