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

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

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

Mavrikii

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

Цитата:
ибо Гугл вообще искать нормально не умеет в случае чего-нить более-менее сложного

кто каким поисковиком пользуется?

Всего записей: 9709 | Зарегистр. 20-09-2014 | Отправлено: 22:33 16-11-2019
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую,  
опять небольшая проблема и опять по поводу скролла, никак не могу сам найти источник скролла.
 
На сайте, если положить что то в корзину и потом перейти к оплате - Warenkorb - Zur Kasse gehen  
- страница первого шага чекаута - checkout/#shipping - открывается с небольшим скроллом вниз, т.е. скролл скрывает шапку.  
Необходимо убрать этот скролл, ну или принудительно добавить скролл наваерх. Все перерыл - принудительный скролл получается только при перезагрузке страницы checkout/#shipping, но именно первая загрузка страницы после клика по кнопке Zur Kasse gehen все равно остается со скроллом...
Где же чего я не вижу?  
 

Всего записей: 1985 | Зарегистр. 18-06-2006 | Отправлено: 13:28 18-11-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
уберите проброс на #shipping или id="shipping" из  

Цитата:
<li id="shipping" class="checkout-shipping-address" data-bind="fadeVisible: visible()">

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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
спасибо, да я это вижу, это стандартно для Magento 2 - убрать id просто так нельзя, а где идет отсыл к якорю #shipping - перебрал поиском все файлы движка на это вхождение - php, xml, js - не находится... спросил спецов по magento, может кто подскажет.
просто подумалось что можно как то с js обмануть, т.е. при загрузке страницы тупо подскроллить ее к топу. Но не получается.

Всего записей: 1985 | Зарегистр. 18-06-2006 | Отправлено: 11:18 20-11-2019
Mavrikii

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

Цитата:
Но не получается

это работа knockoutjs, как понимаю, не стоит в нее вмешиваться.
вероятно можно прицепиться к событиям фреймворка, но мне не хочется в этом разбираться
https://knockoutjs.com/documentation/binding-lifecycle-events.html

Всего записей: 9709 | Зарегистр. 20-09-2014 | Отправлено: 21:37 20-11-2019
VVL99



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
shipping динамически подгружаемый элемент, тот скрипт который его подгружает, он же видимо и скроллит.
Я вот для проверки временно изменил ИД и скролла нет.
Код:
// ==UserScript==
// @name         New Userscript
// @namespace    thermotransferdrucker.net
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://www.thermotransferdrucker.net/*
// @grant        none
// @run-at      document-end
// ==/UserScript==
var SI = setInterval(function() {
    if (document.getElementById("shipping")) {
        clearInterval(SI);
        document.getElementById("shipping").id = "temp";
        setTimeout(function() {document.getElementById("temp").id = "shipping"}, 1e3)
    }
}, 50)

Какой именно скрипт подгружает вам как админу виднее.

Всего записей: 3700 | Зарегистр. 03-02-2011 | Отправлено: 22:51 20-11-2019 | Исправлено: VVL99, 22:52 20-11-2019
Kaber



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

Всего записей: 1066 | Зарегистр. 14-03-2014 | Отправлено: 00:49 11-01-2020 | Исправлено: Kaber, 09:30 11-01-2020
Ivanson

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
скажите, а какой фреймворк лучше учить React или что-то другое? Что более актуально сейчас?

Всего записей: 2 | Зарегистр. 12-01-2020 | Отправлено: 13:20 12-01-2020 | Исправлено: Ivanson, 13:21 12-01-2020
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, есть вот такой код на чистом js
https://jsfiddle.net/elmarj/u35tez5n/5/
Хочу немного укоротить/упростить, к проекту подключен jquery, потому захотелось чисто в образовательных и эстетических целях переписать этот же код, но используя jqeury.
 
вроде все несложно, но не могу что то понять логику, где объявляется функция respondToVisibility.
Если не ошибаюсь,  тут создается пользовательское событие, но хоть убей не могу понять как это работает, а потому не могу и с jquery записать...

Всего записей: 1985 | Зарегистр. 18-06-2006 | Отправлено: 10:49 05-02-2020 | Исправлено: Weinaum, 10:50 05-02-2020
Mavrikii

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

Цитата:
где объявляется функция respondToVisibility.


Код:
respondToVisibility = function(element, callback) {
  var options = {
    root: document.documentElement
  }
 
  var observer = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      callback(entry.intersectionRatio > 0);
    });
  }, options);
 
  observer.observe(element);
}

 

Цитата:
но используя jqeury.

не все из того, что представлено в коде, умеет jQuery
https://jsfiddle.net/tkLdnvcg/
 
можно и так - https://jsfiddle.net/js3hgv8b/1/

Всего записей: 9709 | Зарегистр. 20-09-2014 | Отправлено: 21:23 05-02-2020 | Исправлено: Mavrikii, 22:40 05-02-2020
VVL99



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

Цитата:
укоротить/упростить, к проекту подключен jquery
А на jquery это будет проще и быстрее? А если для понимания, тогда может лучше упростить и разобрать сам код?
 
Без jquery и упрощено/изменено - http://jsfiddle.net/wzgqnad0/1/

Всего записей: 3700 | Зарегистр. 03-02-2011 | Отправлено: 22:06 05-02-2020 | Исправлено: VVL99, 23:10 05-02-2020
RetroRocket



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть простенький скрипт, который меняет значение параметра "navigator.productSub" в Firefox при маскировке под другие браузеры.
Выполняется в Tampermonkey.

Код:
// ==UserScript==
// @name         User Agent Spoofer
// @namespace    https://forum.mozilla-russia.org/viewtopic.php?pid=738586#p738586
// @version      1.1
// @description  For override the "navigator.*" property on fly
// @author       yup
// @date         05.02.2020
// @match        http*://*/*
// @run-at       document-start
// @grant        none
// ==/UserScript==
 
(function() {
    'use strict';
 
    /* navigator.productSub */
if (window.navigator.userAgent.indexOf("Chrome") != -1) window.navigator.__defineGetter__('productSub',function(){return '20030107'});
if (window.navigator.userAgent.indexOf("Safari") != -1) window.navigator.__defineGetter__('productSub',function(){return '20030107'});
if (window.navigator.userAgent.indexOf("Trident") != -1) window.navigator.__defineGetter__('productSub',function(){return 'undefined'});
 
})();

Скрипт работает, однако через iFrame считывается реальное значение параметра. Проверяю здесь -  
 
https://canvasblocker.kkapsner.de/test/navigatorTest.php,
https://browserleaks.com/javascript (кнопки "window" и "iFrame.contentWindow").
 
Можно ли изменить значение параметра и в iFrame тоже?

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

Всего записей: 2062 | Зарегистр. 02-01-2018 | Отправлено: 08:30 06-02-2020 | Исправлено: RetroRocket, 08:31 06-02-2020
Mavrikii

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

Цитата:
однако через iFrame считывается реальное значение параметра.

потому, что iframe не грузится с сервера, а создается динамически.
поэтому укзанный скрипт не применяется
https://github.com/Tampermonkey/tampermonkey/issues/602
https://stackoverflow.com/questions/37616818/apply-a-greasemonkey-tampermonkey-userscript-to-an-iframe

Всего записей: 9709 | Зарегистр. 20-09-2014 | Отправлено: 08:42 06-02-2020
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii,
VVL99
 
спасибо, тут есть одна деталь, очень важная, надо было сразу объяснить, но думал что в приведенном коде она очевидна.
 
Главная задача этого кода - изменить содержание одного элемента DOM (в примере это #visibilityFeedback) в зависимости от того, видим или скрыт другой элемент DOM (в примере #myElement).  
В примере состояние #myElement меняется кнопкой, но в реальности по сути это состояние изменяется сторонними скриптами. Т.е. важно что состояние #myElement изменилось, и неважно, почему и как - скрипт должен отреагировать на это изменение состояния как на событие.  
Для чего собственно как я понимаю здесь и задается respondToVisibility.  
 
К сожалению, сокращенные варианты так работать не могут...

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

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

Цитата:
К сожалению, сокращенные варианты так работать не могут.

Я вам об этом и написал

Цитата:
не все из того, что представлено в коде, умеет jQuery


Всего записей: 9709 | Зарегистр. 20-09-2014 | Отправлено: 13:33 06-02-2020
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
ясно. В любом случае спасибо  

Всего записей: 1985 | Зарегистр. 18-06-2006 | Отправлено: 16:10 06-02-2020
Phricker



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа!
 
Вообщем есть задача стянуть инфу с сайта TripAdvisor.
То есть по факту нужно стянуть:
- Название ресторана
- номер телефона
- email
- ссылка на вебсайт
- категория к которой принадлежит запись (к примеру рестораны Парижа - Веганские рестораны)
 
Всё это нужно сгружать в хоть какую-то базу данных или Excel, CSV, MongoDB (разницы по сути нет как сохранять т.к. всё равно будет переимпорт).
 
Пробовали с другом делать Scraping (Node JS+Puppeter) но затык в том что, у них название то класса может и ОК, но содержимое шифруеться.  Ищу напутсвий или человека который сможет написать скрипт (не за бесплатно конечно).
Может так же есть у кого готовые решения? Как таковые отзывы/обзоры из самих ресторанов не нужны.

----------
..

Всего записей: 3899 | Зарегистр. 09-12-2001 | Отправлено: 00:13 11-02-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Phricker
а при чем тут данная тема ?) хотите расшифровывать - https://galenwong.github.io/blog/2019-06-22-tripadvisor-url-parsing/

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, опять спотыкаюсь на вроде бы очевидном и простом - вот в этом простом примере навигации - клик вместо hover - надо скрыть подменю:  
- по повторному клику по родительскому(toggleClass)
- по клику вне области элемента меню
- по клику на соседний родительский элемент
Как видно, сейчас в примере не срабатывает 3-й пункт.
Если же удалить класс (раскоментировать строку) то не срабатывает первый пункт.  
 
Где ошибка?  
upd
 
нашел немного отличающуюся логикой реализацию, все работает как надо.
https://codepen.io/lagudal/pen/eYNzgMN
Немного сложнее был код для моего понимания, но уже разобрался, так что не актуально )
Тем не менее спасибо )

Всего записей: 1985 | Зарегистр. 18-06-2006 | Отправлено: 12:03 18-02-2020 | Исправлено: Weinaum, 17:22 18-02-2020
Mavrikii

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

Цитата:
Где ошибка?  


Код:
$(document).on('click', '.menu-item', function () {
    var el = this;
        event.preventDefault();
    // $('.submenu').removeClass('show-submenu');
    $('.show-submenu').each(function() {
       if ($(this).closest('.menu-item').get(0) != el)
          $(this).removeClass('show-submenu');
    });
    $(this).find('.submenu').toggleClass('show-submenu');
 });

 
или

Код:
$(document).on('click', '.menu-item', function () {
        event.preventDefault();
    $('.show-submenu').removeClass('show-submenu');
    $(this).find('.submenu').toggleClass('show-submenu');
 });  

Всего записей: 9709 | Зарегистр. 20-09-2014 | Отправлено: 21:57 18-02-2020 | Исправлено: Mavrikii, 22:23 18-02-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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru