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

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

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

Weinaum



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

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 12:57 19-02-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто из знатоков посмотреть?
Видимо, чего-то не хватает в background.js или popup.js.
По ошибке "...  is not a function" находится много всего, но понимания не хватает.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2682 | Зарегистр. 02-01-2018 | Отправлено: 18:36 23-02-2020
Mavrikii

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

Цитата:
где объявляется _store2.default.getState:

во первых не объявляется, а используется. судя по названию - компонента для хранения каких то данных, либо в local storage, либо через куки, которые вы отрубаете.
разбираться в сложном скрипте, ради чьей то прихоти с куками, как то не особо хочется, если честно.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 22:38 23-02-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Цитата:
компонента для хранения каких то данных, либо в local storage, либо через куки, которые вы отрубаете.
Скорее всего в локальном хранилище, поскольку куки не появляются в списке, если они разрешены.

Цитата:
во первых не объявляется, а используется.
Да, вы правы. Но ведь объявление всё равно есть в скрипте, так почему же пишет "_store2.default.getState is not a function" при выключенных куках.

Цитата:
разбираться в сложном скрипте, ради чьей то прихоти с куками, как то не особо хочется, если честно.
Просто куки у меня выключены по умолчанию и включаю их только для отдельных сайтов.  
Спасибо что посмотрели.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2682 | Зарегистр. 02-01-2018 | Отправлено: 08:51 24-02-2020
Mavrikii

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

Цитата:
Но ведь объявление всё равно есть в скрипте

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

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 20:52 24-02-2020 | Исправлено: Mavrikii, 20:52 24-02-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Цитата:
функция описана в одном из модулей подгружаемых с сайта (но ставить расширение для этого в браузер я не стал). и он, по какой то причине, не подгружается.
Я экспериментировал в виртуалке при отключенной сети, то есть неоткуда было подгружаться.
И даже в этом случае отображение меню работало при разрешённых куках.
Может я вообще пошёл по ложному пути и ошибка "_store2.default.getState is not a function" вовсе не связана с пустым меню.
Но больше зацепиться не за что.

Цитата:
скрипт определил, что куки не работают.
Вот найти бы это место и закомментировать.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2682 | Зарегистр. 02-01-2018 | Отправлено: 21:09 24-02-2020
Mavrikii

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

Цитата:
Вот найти бы это место и закомментировать.

там слишком много модулей, так как используется библиотека Redux.  
https://ru.wikipedia.org/wiki/Redux
нужно в ней разбираться.
 
можете попробовать с https://developer.mozilla.org/ru/docs/Setting_up_extension_development_environment
но нужно понимать js, как минимум.
 
ps: и что мешает, когда нужно, открывать окно в режиме анонимности - там все куки удаляются после закрытия.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 21:23 24-02-2020 | Исправлено: Mavrikii, 21:30 24-02-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Цитата:
и что мешает, когда нужно, открывать окно в режиме анонимности - там все куки удаляются после закрытия.
Можно и так конечно. Просто была надежда найти ошибку и "починить" расширение "малой кровью".

Цитата:
но нужно понимать js, как минимум.
С js не очень. Понимаю общие вещи, типа вот объявление переменной через var или let, вот создание массива, вызов функции.
Могу вставить в нужное место код вывода в лог или alert-окно.
 
За ссылки спасибо.

----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2682 | Зарегистр. 02-01-2018 | Отправлено: 21:45 24-02-2020
Weinaum



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

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 11:08 12-03-2020
Mavrikii

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

Цитата:
перенос каждого пункта меню на вторую строку после первого пробела, запятой, дефиса или слеша, но только по одному разу, т.е. чтобы при последующих знаках препинания переносов не было

не проще пример показать?

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 19:45 12-03-2020
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
ну подробнее, я хочу - вот пример - чтобы каждый из пунктов меню был бы не в одну, а в 2 строки.  
Что я заметил. В показанном примере меню-пункты длинные. Потому при просмотре на экранах больше таблетов но меньше больших десктопов (на ноутах например) будет или одна большая строка или будет стандартный перенос html wrap. После такого переноса все выровнено очень плохо, одни пункты могут быть в одну строку, другие в 2, а какие то в 3. К тому же выравнивание по горизонтали выглядит не очень в таком случае, вот что я имею в виду(выделил background цветом, чтобы понятнее было.)
https://codepen.io/lagudal/pen/ExjjdKP
Но если я задам для элементов white-space: nowrap и принудительные br, то все выглядит гораздо ровнее.  
В сами эти меню пункты на уровне html поставить разделители нельзя, поэтому остается js.
В настоящее время я все это делаю простой заменой контента, но если пункты меню по какой то причине изменятся, удалятся, добавятся новые, то придется снова это проделывать.  
Вот и пришла мысль сделать перенос после первого знака препинания, но не средствами css, a js.  
Т.е. для  первого меню пункта первым знаком препинания и условием переноса на новую строку будет зяпятая после слова "Etiktettendrucker", для второго - дефис после слова "Thermotransfer", для третьего - пробел после слова "Etiketten", ну и тд.  
Логически я понимаю, что просто все вроде бы - по каждому элементу по всей длине символов пробегаем например while циклом, и если встречается один из символов,которые я назначил препинаниями, то добавить после него символ переноса и сразу break из цикла. Но хромаю в js, в символах особенно, поэтому вот прошу помощи.  
 
upd
Вот с грехом пополам для одного что получилось -  
https://codepen.io/lagudal/pen/OJVvjQo
осталось добавить логические условия и циклом по всем пройтись..

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 13:15 13-03-2020 | Исправлено: Weinaum, 17:24 13-03-2020
Mavrikii

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

Цитата:
Вот с грехом пополам для одного что получилось

если есть jQuery, то все гораздо проще.
но и с пробелом проблема - он есть и в других местах, как поймете, что его нужно применить именно на определенном пункте, а не где то еще в случае очень короткого первого слова и пробела после него?
 

Код:
$(function() {
   $('.navbar li a').each(function() {
      $(this).html($(this).html().replace(/([\-,\s])/, '$1<br>'));
   });
});

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 22:24 13-03-2020 | Исправлено: Mavrikii, 22:30 13-03-2020
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
jquery есть, спасибо, воспользуюсь вашим вариантом, элегантнее и лаконичнее, чем мой корявый  
код.  
По поводу возможного короткого первого слова - вы правы, но проблема не только с пробелом, с любым разделителем может быть. С немецким языком пока не критично,но вот будет английская версия, там актуальнее уже. Так как там слова короче, есть где 1-е слово из 4-5 букв, а далее может быть еще 20+ символов.  Потому конечно какое то условие по минимальному кол-ву символов для первого ряда надо ставить. В моем корявом варианте это несложно - я тупо индексировать начинаю с какого-то минимума. Например, с 10 -  

Код:
$('nav.navbar ul li a').each(function() {
  var i = 10;  
  var char;
  var str = $(this).html();
  String.prototype.addCharAt=function(index, replacement) {
    return this.substr(0, index-1) + replacement + this.substr(index);
}
  while (i < str.length) {
    char = str.charAt(i);
    i++;
    if ((char == ',') | (char == ' ') | (char == '-') | (char == '/')) {
      char = char.concat('<br>');
      str = str.addCharAt(i,char);      
      $(this).html(str);      
      break;      
    }  
  }  
  })

 
Как это проделать в Вашем коде, пока не знаю )
Но там тоже может ждать засада: например, если после 10-го символа нет никаких разделителей больше. Тогда нужно будет добавлять еще и это условие.

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 11:56 16-03-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер, возник такой вопрос: использую slick слайдер под моб.устройства. У slick есть опция - slidesToScroll, но она логична когда щелкаешь на стрелочки, а когда скролишь пальцем логично бы было останавливать прокрутку после убирания пальца - никто не сталкивался?
Сорри за вопрос, по запросу "slick slider finger switch slidesToScroll" быстро нашел решение "swipeToSlide: true"

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 23:07 23-03-2020 | Исправлено: Kaber, 23:15 23-03-2020
Mavrikii

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

Цитата:
swipeToSlide
boolean
false
Allow users to drag or swipe directly to a slide irrespective of slidesToScroll
 
touchMove
boolean
true
Enable slide motion with touch

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 23:15 23-03-2020
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
приветствую, опять у меня вопросы.
Есть необходимость доработки страницы сравнения товаров в одной из cms. Там все реализовано в табличной верстке, и поэтому буду придерживаться этого же подхода, так как в данной системе менять кардинально шаблон без привязки к логике не получится.  
В двух словах, что есть. В стандартном решении практически никак не реализована адаптивность, и при сравнении нескольких товаров все выглядит ужасно и нужно либо отключать это сравнение на малых разрешениях, либо что то придумывать.  
Задумка ux дизайнера - горизонтальный скролл, по подобию как он реализован в каруселях и слайдерах. Т.е. по клику по навигации или же drag элемента влево-вправо  происходит скролл на величину равную ширине одного элемента, как бы одного слайда.  
Собственно, ниже пен, в котором моя попытка как то это реализовать. Таблицу оставил максимально близкой к оригиналу.  
Как бы сделал насколько хватило пока умений и знаний - если кто подскажет, как можно упростить, буду признателен.
Главное, что пока не сделал - как правильно реализовать такой же скролл не по клику, а по drag элемента? Mousemove? 
https://codepen.io/lagudal/pen/yLNwjar

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 15:29 01-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
возьмите любой готовый скрипт слайдера, зачем с нуля делать что то?
 

Цитата:
Как бы сделал насколько хватило пока умений и знаний - если кто подскажет, как можно упростить, буду признателен

ширину можно определять с помощью css и @media
https://www.w3schools.com/css/css_rwd_mediaqueries.asp
 

Цитата:
а по drag элемента? Mousemove? 

https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 21:12 01-04-2020
Weinaum



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

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

ну вот не знаю - адаптировать таблицу сравнения товаров в Мagento 2 в какой то готовый слайдер похоже не очень то проще задача, чем вот так минимально что то сделать. Я просмотрел кучу платных тем и модулей - кажется настолько очевидным, что в сравнении товаров на мобильных разрешениях там полная жопа, но никто ни разу не попытался что то в этой таблице изменить, кроме как играть шириной колонок.  

Цитата:
ширину можно определять с помощью css и @media

опять же все упирается в эту таблицу - поскольку мне надо делать эту ширину переменной, а ширина в табл несколько отличается от ширины во флексах, например. Ну да ладно.  

Цитата:
https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent

что ж, буду разбираться...
 
еще один вопрос - надо как то сделать кнопки назад - вперед неактивными, если дальше некуда скроллить в ту или другую сторону. Ну т.е. цвет chevron менять.  
И если по поводу назад я еще понимаю - есть переменная по позиции, и отслеживать только когда она равна или не равна нулю, то как определить, когда вперед больше некуда скроллить?
 
 
 

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 12:12 02-04-2020
Mavrikii

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

Цитата:
есть переменная по позиции, и отслеживать только когда она равна или не равна нулю, то как определить, когда вперед больше некуда скроллить?

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

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 00:02 03-04-2020
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
спасибо, элементарно и просто, как все гениальное.))
А я высчитывал позицию - т.е. брал ширину таблицы, и если разница между шириной таблицы и координатой позиции становится меньше ширины области просмотра, ($(window).width()) то все - дальше скроллить некуда и делаю иконку неактивной. Работает, хотя конечно ваш вариант проще и лучше.  
Сорри что сразу не ответил - с этим карантином все наперекосяк.
 
Добавлено:
еще один вопрос возник - что то не могу сообразить никак. Вот есть такой пен, по клику на кнопку - lg-hotspot__button - добавляет класс lg-hotspot--selected к элементу lg-hotspot, таким образом делает видимым окно с информацией - элемент lg-hotspot__label.
Как видно, код написан на чистом js, как на чистом же js сделать, чтобы класс  lg-hotspot--selected - удалялся также если кликнуть по пустому месту, кроме элемента lg-hotspot__label, когда он он видим? т.е. клик по пустому месту, в т.ч. и по кнопке - закрыть, клик по открытому окну с информацией - не закрывать.
Спасибо заранее.  
https://codepen.io/abcretrograde/pen/dKGOEL
 

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 10:35 14-04-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум 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