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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 120 121 122 123 124 125

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

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']")

Всего записей: 4160 | Зарегистр. 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\'"]')

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

Всего записей: 2156 | Зарегистр. 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)})
 

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

Всего записей: 2156 | Зарегистр. 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();
        },

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

Всего записей: 16419 | Зарегистр. 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 файла, один из маленьких, и один из больших.  
Ну вот я вообще удалял кусок кода, выключал вообще файл - никакой реакции, вообще не было.  
Только сейчас я еще раз внимательно все разобрал, и вот увидел второй файл, и после нужных изменений все работает как надо.  
Еще раз спасибо )

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



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

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

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

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



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

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

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

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

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

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



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

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



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

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

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

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



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

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

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

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



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

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

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

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



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

Всего записей: 2156 | Зарегистр. 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 списку меню - можно как то сделать так, чтобы это лого стало нужной мне ссылкой?
 

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

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

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

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

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

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

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



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

Всего записей: 2156 | Зарегистр. 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 120 121 122 123 124 125

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru