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

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

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

Nick3230

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо Вам за примеры. Теперь всё получилось!
==================
 
Есть ещё неработающий скрипт вида:

Код:
var comment = (function createCurrentURLComment(window){
  var prefix = ' saved from url=',
      postfix = ' ',
      document = window.document,
      location = window.location,
      comment = document.createComment(prefix + location.href + postfix);
   
  document.documentElement.before(comment);
 
  window.addEventListener('popstate', function(){
    comment.data = prefix + location.href + postfix;
  }, false);
   
  return comment
}(window));
 

 
Этот скрипт должен сохранять текущий URL в *.html файле, но он почему-то не работает.
Т.е., например, при сохранении в приватном режиме в браузере не сохраняется исходный URL, а вместо этого там по умолчанию только:
"<!-- saved from url=(0014)about:internet -->"
 
Подскажите, пожалуйста, исправленную версию скрипта, чтобы сохранялся URL тоже и в приватном режиме в браузере.
 

Всего записей: 200 | Зарегистр. 05-12-2006 | Отправлено: 15:29 01-11-2023
Mavrikii

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

Цитата:
Этот скрипт должен сохранять текущий URL в *.html файле, но он почему-то не работает.

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

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 18:33 01-11-2023
Nick3230

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

Цитата:
браузеры сохраняют тот html, что получают от сервера, а не модифицированный с помощью js

Тем не менее, раньше этот скрипт успешно работал, но с какого-то времени перестал (видимо, из-за очередных обновлений браузера).
(Я использую внедрение пользовательских скриптов на страницы, например, через такие дополнения как "Violentmonkey", "Greasemonkey" и т.п.)
 
Дело в том, что даже на последнем Firefox v119.0 x64 скрипт отрабатывает нормально (можете это проверить), а вот на Chromium-based браузерах никак не получается заставить его заработать правильно.
 
(Поэтому и спросил, может быть кто-нибудь знает и подскажет такое решение).
 
P.S. Большое спасибо Вам за ответы и скрипты!!!

Всего записей: 200 | Зарегистр. 05-12-2006 | Отправлено: 12:15 02-11-2023
Mavrikii

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

Цитата:
Тем не менее, раньше этот скрипт успешно работал,

браузер сам вставляет такую информацию при сохранении страницы, без стороннего скрипта.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 12:17 02-11-2023
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, помогите разобраться, в математике похоже туплю или чего то не вижу.
Есть на странице товара в magento эффект лупы при наведении курсора на картинку.
Например, вот на этой странице товара.
Т.о. есть 2 области - область курсора и область увеличения справа от картинки.  
Проблема в том, что по дефолту сейчас область курсора примерно в 2 раза меньше области увеличения.
Размеры области увеличения прописываются в xml конфиге, и если я хочу сделать эту область 550х550, как в примере, то область курсора получается 287х287, а это многовато. Хочу сделать в 3 раза меньше примерно, т.е. порядка 90px.
Вот тут искомый js файл, в нем я нашел где прописаны размеры области курсора:
 

Код:
magnifyLensElement.css

 
Если я уменьшаю эти размеры, например просто разделив на 3, то область курсора становится нужного размера, но перестает следовать за курсором.  
Т.е. надо определить - изменить - еще координаты по X и Y, которые как я вижу прописаны ниже в js.
И вот тут затык, никак не пойму как правильно изменить эти координаты.

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 16:45 27-11-2023
Mavrikii

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

Код:
magnifyLensElement.css({
   width: Math.round(data[idSelectorMainImg].lensW) + 'px',
   height: Math.round(data[idSelectorMainImg].lensH) + 'px',
   display: ''
});

 

Цитата:
Если я уменьшаю эти размеры, например просто разделив на 3, то область курсора становится нужного размера, но перестает следовать за курсором.

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

Код:
mainImageData.lensW = Math.round(mainImageData.w / mainImageData.zoom);
mainImageData.lensH = Math.round(mainImageData.h / mainImageData.zoom);

то есть на основе высоты картинки и параметра зума.
 

Код:
        magnifierOptions = {
            x: 0,
            y: 0,
            w: 0,
            h: 0,
            lensW: 0,
            lensH: 0,
            lensBgX: 0,
            lensBgY: 0,
            largeW: 0,
            largeH: 0,
            largeL: 0,
            largeT: 0,
            zoom: 2,
            zoomMin: 1.1,
            zoomMax: 5,
            mode: 'outside',
            eventType: 'click',
            status: 0,
            zoomAttached: false,
            zoomable: customUserOptions.zoomable !== undefined ?
                customUserOptions.zoomable
                : false,
            onthumbenter: customUserOptions.onthumbenter !== undefined ?
                customUserOptions.onthumbenter
                : null,
            onthumbmove: customUserOptions.onthumbmove !== undefined ?
                customUserOptions.onthumbmove
                : null,
            onthumbleave: customUserOptions.onthumbleave !== undefined ?
                customUserOptions.onthumbleave
                : null,
            onzoom: customUserOptions.onzoom !== undefined ?
                customUserOptions.onzoom
                : null
        },
 

выставлен zoom: 2
 
ps: его можно переопределить в том, что генерит CMS - эта строка

Цитата:
"options": {"nav":"thumbs","loop":true,"keyboard":true,"arrows":true,"allowfullscreen":true,"showCaption":false,"width":700,"thumbwidth":88,"thumbheight":110,"height":700,"transitionduration":500,"transition":"slide","navarrows":true,"navtype":"slides","navdir":"horizontal"}


Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 20:58 27-11-2023 | Исправлено: Mavrikii, 21:35 27-11-2023
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
спасибо.
Да, я конечно же пробовал изначально менять в magnifierOptions - но независимо какой я выставляю там zoom, zoomMin или ZoomMax, ничего не меняется.  
А вот тут -  

Код:
mainImageData.lensW = Math.round(mainImageData.w / mainImageData.zoom);
mainImageData.lensH = Math.round(mainImageData.h / mainImageData.zoom);

да тут получилось изменить, все в принципе корректно.

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

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

Цитата:
его можно переопределить в том, что генерит CMS - эта строка

перепутал, эта

Код:
 "magnifierOpts": {"fullscreenzoom":"20","top":"","left":"","width":"550","height":"550","eventType":"hover","enabled":true},

она генерится самой CMS. вот если тут будет и "zoom": "нужное значение", то изменит тоже размер.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 20:21 28-11-2023
Mezhic



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую,
 
Подключил jQuery UI к странице с формой на Тильде. Мне нужно только функция autocomplete. Автодополнение включено для трех полей, сам скрипт довольно большой вышел, под полтора мегабайта, из-за большого куска данных в json для подставления. Так вот, бывают проблемы, бывает при первой загрузке в разных браузерах не срабатывает функция автодополнения, не появляется выпадающий список с вариантами, а в Сафарн не работает вообще. При этом в консоли чисто, никаких ошибок.  
 
Посмотрите, пожалуйста. Буду рад совету
 
<----->

Всего записей: 115 | Зарегистр. 27-08-2004 | Отправлено: 17:55 30-11-2023 | Исправлено: Mezhic, 17:06 18-12-2023
Mavrikii

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

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 00:30 01-12-2023
Mezhic



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
 
Я скомпилировал jquery ui только с плагином autocompete через их билдер на сайте, с версиями jquery поэкспериментировал, и сейчас вроде перестала появляться проблема, когда при первой загрузке не работает.  
 
Но с Сафари как была проблема, так и осталась. У меня мака нет, могу только тестить в browserstack по минуте. Ни разу запустить не удалось  (хотя как говорил, сам плагин, если не на этой странице, работает).

Всего записей: 115 | Зарегистр. 27-08-2004 | Отправлено: 06:04 01-12-2023
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста, почему скрипт не производит добавление UTM метки.
 
Тест
 
Хочу добавить UTM метку ко всем ссылкам на сайте и в меню, кроме ссылок в разделе "Выбор UTM метки".

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 18:15 14-01-2024 | Исправлено: usertum, 07:39 17-01-2024
Mavrikii

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

Цитата:
почему скрипт не производит добавление UTM метки

какой скрипт?

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 22:02 14-01-2024
Demon

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не специалист по JS, поэтому прошу Вашей помощи.
Есть функция:
            function(data){
                document.getElementById('message').innerHTML = data;
                $('#message').fadeIn(200);
                $('.hide').hide(0);
                $('#submit').removeAttr('disabled');
            }
Функция эта вызывается периодично, при этом на экране всякий раз переотображается message.  
Как подправить функцию, что бы, если значение message == data, то ничего делать не нужно.

Всего записей: 583 | Зарегистр. 03-10-2001 | Отправлено: 12:03 15-01-2024
Mavrikii

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

Код:
function(data) {
    var m = $('#message');
    if (m.html() == data)
        return;
    m.html(data).fadeIn(200);
    $('.hide').hide(0);
    $('#submit').removeAttr('disabled');
}

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 12:08 15-01-2024
usertum



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

Цитата:
какой скрипт?


Код:
 
    <script type="text/javascript">
    function genTags(urlString) {
        var tags = {};
        var urlParts = urlString.split('?');
        if(urlParts.length > 1) {
            urlParts[1].split("&").forEach(function(tagString) {
                if(tagString.indexOf("s_") === -1 && tagString.indexOf("tfc_") === -1) {
                    var tagParts = tagString.split('=');
                    tags[tagParts[0]] = tagParts[1];
                }
            });
        }
        return tags;
    };
    function tagsToString(tags) {
        var tagArray = [];
        for(var tagName in tags) {
            tagArray.push(tagName + '=' + tags[tagName]);
        }
        return tagArray.join('&');
    }
    var pageTags = genTags(window.location.href);
 
    if (window.location.search.length > 1) {
        var aLinks = document.querySelectorAll('div:not(.uc-menu)');
        var arrayLinks = Array.from(aLinks);
        arrayLinks.forEach(function (el) {
            var href = el.getAttribute("href");
            if (href && href.indexOf("/") > -1 && href.indexOf("#") === -1) {
                var linkTags = genTags(href);
                var newTags = Object.assign(linkTags, pageTags);
                el.setAttribute("href", href.split('?')[0] + '?' + tagsToString(newTags));
            }
        });
    }
    </script>
 

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 12:29 15-01-2024 | Исправлено: usertum, 12:30 15-01-2024
Demon

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Благодарю за быстрый ответ, но не работает. Первый раз message отображается, потом исчезает, хотя data не меняется. Даже после изменения data message не отображается. Логики не наблюдаю.

Всего записей: 583 | Зарегистр. 03-10-2001 | Отправлено: 12:30 15-01-2024
Mavrikii

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

Цитата:
Первый раз message отображается, потом исчезает, хотя data не меняется

Скорее всего передается пустое data

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 12:34 15-01-2024
Demon

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Я не прав, так как опубликовал часть скрипта, а это не правильно.
Полный текст:
jQuery(document).ready(function(){
"use strict";
    $('#contactform').submit(function(){
 
        var action = $(this).attr('action');
 
        $("#message").fadeOut(0,function() {
        $('#message').hide();
 var str = $("form").serialize();
  $("#results").text( str );
         $('#submit')
            .attr('disabled','disabled');
 
        $.post(action, {
            name: $('#name').val(),
                        pwd1: $('#pwd1').val(),
                        pwd2: $('#pwd2').val(),
 
                        dd : $("form").serialize(),
                        tarif: $('input[name="tarif"]:checked').val(),
            email: $('#email').val(),
                        oferta: $('#oferta').val(),
//            phone: $('#phone').val(),
            comments: $('#comments').val()
        },
            function(data){
                document.getElementById('message').innerHTML = data;
                $('#message').fadeIn(200);
                $('.hide').hide(0);
                $('#submit').removeAttr('disabled');
 
            }
 
        );
 
        });
 
        return false;
 
    });
 
});
 
Задача таже. Если форма вернула теже данные, ничего не переотображать.

Всего записей: 583 | Зарегистр. 03-10-2001 | Отправлено: 12:41 15-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon
у вас при каждом запросе сначала прячется
Цитата:
$("#message").fadeOut(0,function()  

делается запрос, а потом вставляется результат. поэтому нужно прятать плавно только когда результат получен и отличается. и если fadeout(0), то идентично hide(), то запись такая с function не нужна - она чтобы выполнить что то после выполнения fadeout в течение времени. если же время выставлено 0, то это моментально.
 
как то так.

Код:
$(function(){
    "use strict";
    $('#contactform').on('submit', function() {
        var action = $(this).attr('action'),
            m = $('#message'),
            form = $('#form').serialize();
 
        m.fadeOut(0, function() {
//            m.hide();
            $("#results").text(form);
            $('#submit').attr('disabled','disabled');
 
            $.post(action, {
                name: $('#name').val(),
                pwd1: $('#pwd1').val(),
                pwd2: $('#pwd2').val(),
                dd : form,
                tarif: $('input[name="tarif"]:checked').val(),
                email: $('#email').val(),
                oferta: $('#oferta').val(),
//              phone: $('#phone').val(),
                comments: $('#comments').val()
            },
            function(data) {
                if (m.html() != data) {
                    m.fadeOut(200, function() {
                        m.html(data).fadeIn(200);  
                    });
                }
                $('.hide').hide(0);
                $('#submit').removeAttr('disabled');
            }  
        });
        return false;
    });
});

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

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 03:14 16-01-2024
Открыть новую тему     Написать ответ в эту тему

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