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

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

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

zzz528

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу сделать списки товаров как на али-эксперс все категории  жмёшь сбоку вылазит ещё список и так далее....
 
Хочу имено в виде стандартных окон windows: главное меню сверху - категории вылезают снизу - товары дальше сбоку, пока такое даже вручную не получается
 
Сайт уже разбит на категории типа www.xxx.com/категория/наименование, то есть я думаю что скриптом лучше создавать этот список чем вручную прописывать. Но не получается и найти что-то полезное по теме тоже.
 
 
 
Подскажите пожалуйста

Всего записей: 1643 | Зарегистр. 20-06-2005 | Отправлено: 22:47 10-03-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzz528
здесь задают именно вопросы по js, а не ищут готовые скрипты меню.
 

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

cписок должен генериться автоматически на серверной стороне.
 
найдите готовый, посмотрите его название (вряд ли будет написан для конкретного сайта)
https://www.tone.co.uk/drop-down-navigation-22-inspiring-examples-of-stylish-drop-down-menus/
https://baymard.com/homepage-and-category-usability/benchmark/page-types/drop-down-menu

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:53 10-03-2019 | Исправлено: Mavrikii, 22:56 10-03-2019
zzz528

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

Всего записей: 1643 | Зарегистр. 20-06-2005 | Отправлено: 13:34 15-03-2019
b7music



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день. У меня такой вопрос, настраиваю сайт на https и возникла проблема с ajax подгрузкой страницы
нашел скрипт

Код:
 
ajaxPagination = function (e){
            e.preventDefault();
 
            busy = true;
            var wrapperClass = $('.'+ajaxPagerLinkClass).data(ajaxWrapAttribute),
                $wrapper = $('.' + wrapperClass),
                $link = $(this);
 
            if($wrapper.length){
                $('.' + ajaxPagerWrapClass).append(ajaxPagerLoadingTpl);
                $.get($link.attr('href'), {'AJAX_PAGE' : 'Y'}, function(data) {
                    $('.' + ajaxPagerWrapClass).remove();
 
                    $wrapper.append($(data).filter('.product-ajax-cont'));
                    $wrapper.append($(data).find('.product-ajax-cont'));
                    $wrapper.append($(data).filter('.news-item'));
                    $wrapper.append($(data).find('.news-item'));
                    $wrapper.append($(data).filter('.ajax-pager-wrap'));
                    $wrapper.append($(data).find('.ajax-pager-wrap'));
 
                    setTimeout(function(){
                        $wrapper.find('.product-ajax-cont').removeClass('animate');
                    },1000);
                    setTimeout(function () {
                        var t_ = data.split('</html>');
                        if(t_[1]!==undefined && t_[1]!==null){
                            if($(t_[1]).html()!==undefined){
                                var script = $(t_[1]).html().replace(new RegExp('%26AJAX_PAGE%3DY','g'),'');
                                script = script.replace(new RegExp('&AJAX_PAGE%3DY','g'),'');
                                script = script.replace(new RegExp('PAGEN_[0-9][0-9]%3D[0-9]','g'),'');
                                script = script.replace(new RegExp('PAGEN_[0-9]%3D[0-9]','g'),'');
                                eval(script);
                            }
                        }
                    },1000)
 
                    attachPagination(wrapperClass);
                    registerProductListeners();
                    $("select").selectOrDie({placeholderOption:true});
 
                    var overlay = document.querySelector( '.md-overlay' );
 
                    [].slice.call( document.querySelectorAll( '.md-trigger' ) ).forEach( function( el, i ) {
 
                        var modal = document.querySelector( '#' + el.getAttribute( 'data-modal' ) ),
                            close = modal.querySelector( '.md-close' );
 
                        function removeModal( hasPerspective ) {
                            classie.remove( modal, 'md-show' );
                            classie.remove( overlay, 'md-show' );
 
                            if( hasPerspective ) {
                                classie.remove( document.documentElement, 'md-perspective' );
                            }
                        }
 
                        function removeModalHandler() {
                            removeModal( classie.has( el, 'md-setperspective' ) );
                        }
 
                        el.addEventListener( 'click', function( ev ) {
                            classie.add( modal, 'md-show' );
                            classie.add( overlay, 'md-show' );
                            overlay.removeEventListener( 'click', removeModalHandler );
                            overlay.addEventListener( 'click', removeModalHandler );
 
                            if( classie.has( el, 'md-setperspective' ) ) {
                                setTimeout( function() {
                                    classie.add( document.documentElement, 'md-perspective' );
                                }, 25 );
                            }
                        });
                        if(close!==null){
                            close.addEventListener( 'click', function( ev ) {
                                ev.stopPropagation();
                                removeModalHandler();
                            });
                        }
 
                    } );
 
                    if(window.picturefill!=undefined){
                        window.picturefill();
                    }
 
                    busy = false;
                });
            }
        };
 

Все остальное отдается по https, но на выходе имею  

Код:
 
 
Mixed Content: The page at 'https://mysite.ru/catalog/pizza/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://mysite.ru/catalog/pizza/?PAGEN_3=2&clear_cache=Y&AJAX_PAGE=Y'. This request has been blocked; the content must be served over HTTPS.
 

Подскажите, как поправить?

Всего записей: 672 | Зарегистр. 04-03-2010 | Отправлено: 10:21 14-06-2019 | Исправлено: b7music, 10:22 14-06-2019
Mavrikii

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

Цитата:
Подскажите, как поправить?

У вас линки уже такие изначально

Цитата:
$link.attr('href'), {'AJAX_PAGE' : 'Y'}

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 12:25 14-06-2019
b7music



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

Цитата:
У вас линки уже такие изначально  

Не понял.  
Вывожу в консоль  $link там нет http
 
вот код php который выводит ссылку

Код:
<?php
 
$paramName = 'PAGEN_'.$arResult['NAV_RESULT']->NavNum;
$paramValue = $arResult['NAV_RESULT']->NavPageNomer;
$pageCount = $arResult['NAV_RESULT']->NavPageCount;
 
if ($paramValue < $pageCount) {
    $paramValue = (int) $paramValue + 1;
    $url = htmlspecialcharsbx(
        $APPLICATION->GetCurPageParam(
            sprintf('%s=%s', $paramName, $paramValue),
            array($paramName, 'AJAX_PAGE',)
        )
    );
    echo sprintf('<div class="ajax-pager-wrap">
                      <a class="ajax-pager-link" data-wrapper-class="product-list" href="%s"></a>
                  </div>',
        $url);
}
 
 
if(isset($_GET['AJAX_PAGE'])) {  }
 
?>

в $url относительная ссылка без протокола. Я не пойму откуда он берет именно http
https://miami-pizza.ru/catalog/pizza/ вот страничка, если прокрутить чуть ниже то появляется эта ошибка
Так же в консоль выводит  
Access to XMLHttpRequest at 'http://miami-pizza.ru/catalog/pizza/?PAGEN_3=2&bitrix_include_areas=N&clear_cache=Y&AJAX_PAGE=Y' (redirected from 'https://miami-pizza.ru/catalog/pizza/index.php?PAGEN_3=2&bitrix_include_areas=N&clear_cache=Y&AJAX_
 
Если вручную перейти на https://miami-pizza.ru/catalog/pizza/?PAGEN_2=2&AJAX_PAGE=Y то загружается нормально, ничерта не пойму.
 

Всего записей: 672 | Зарегистр. 04-03-2010 | Отправлено: 12:31 14-06-2019 | Исправлено: b7music, 18:05 14-06-2019
involute

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как заставить этот код, работающий в IE, работать в Firefox и Chrome?
 

Код:
 
<html>
<head>
<script>
window.onload = startDownload;
 
function getXmlHttp(){
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}
 
function startDownload() {
    var xmlhttp = getXmlHttp()
    xmlhttp.open('GET', 'http://www.example.com', true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            alert(xmlhttp.status); // почему 0, а не 200?
            if(xmlhttp.status == 200) {
                htmlDoc = xmlhttp.responseText;
                document.getElementById("ibb").innerHTML = htmlDoc;
                alert(htmlDoc);
            }
        }
    };
    xmlhttp.send(null);
}
</script>
</head>
 
<body>
<span id="ibb">
</span>
</body>
</html>
 

Всего записей: 130 | Зарегистр. 16-08-2007 | Отправлено: 14:09 14-06-2019 | Исправлено: involute, 19:57 14-06-2019
Mavrikii

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

Цитата:
ничерта не пойму.

у вас изначально идет правильный запрос к https, но он обрывается по какой то причине.
после чего браузер пытается сделать повторный, но к http, что и выдает это сообщение.
дело не в скрипте, а что то на серверной стороне.
https://stackoverflow.com/questions/12009423/what-does-status-canceled-for-a-resource-mean-in-chrome-developer-tools
и IE пишет

Цитата:
XMLHttpRequest: Network Error 0x80700013, Could not complete the operation due to error 80700013.

ваш сервер режет первоначальный запрос.
 
 

Цитата:
Если вручную перейти  

вручную это не
Цитата:
X-Requested-With: XMLHttpRequest
запрос
 
Добавлено:
involute

Цитата:
Как заставить этот код, работающий в IE, работать в Firefox и Crome?  

кроссдоменные AJAX запросы требуют наличия  
https://ru.wikipedia.org/wiki/Cross-origin_resource_sharing
то, что одному браузеру это безразлично не означает, что и остальные должны поступать так же.
если же загружаете содержимое с того же домена - проблем быть не должно.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:50 14-06-2019 | Исправлено: Mavrikii, 20:36 14-06-2019
involute

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

Цитата:
кроссдоменные AJAX запросы требуют наличия  
https://ru.wikipedia.org/wiki/Cross-origin_resource_sharing  
то, что одному браузеру это безразлично не означает, что и остальные должны поступать так же.  
если же загружаете содержимое с того же домена - проблем быть не должно.

 
 Насколько правильно я понял, мне нужно нечто другое. Ничего кроссдоменного мне не нужно. Просто я хочу загрузить в браузер один (любой) сайт, то есть отобразить его. В данном случае это http://www.example.com. В IE всё получается, в других браузерах — нет, потому что в IE удаётся достичь xmlhttp.status = 200, а в других браузерах xmlhttp.status = 0, то есть страница не отдаётся сервером. В конечном счёте мне нужно получить тело документа и парсить его на своё усмотрение.

Всего записей: 130 | Зарегистр. 16-08-2007 | Отправлено: 23:45 14-06-2019 | Исправлено: involute, 23:47 14-06-2019
Mavrikii

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

Цитата:
Просто я хочу загрузить в браузер один (любой) сайт

это и есть кроссдоменный запрос. не кроссдоменный если вы делаете запрос к тому же домену, с которого загружена и страница с этим js кодом.
 

Цитата:
В IE всё получается, в других браузерах — нет

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:48 14-06-2019 | Исправлено: Mavrikii, 23:52 14-06-2019
Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Гугл отказывается отвечать, прошу помощи зала.
Я пытаюсь "поставить на паузу" загрузку сайта.  
В идеале - это вызов window.stop() а после исполнения неких действий отмена window.stop(). Но насколько я понимаю, это невозможно (или я ошибаюсь?).
 
Если чуть более конкретно,  
1) исполняю UserScript на Greasemonkey с параметром "@run-at document-start"
2) Сразу же пишу window.stop(), чтобы предотвратить загрузку чего-либо.  
3) Затем совершаю манипуляции с DOM. Всё корректно отображается. И до сих пор я доволен.
 
Но основная и конечная цель - сохранить результат в виде HTML'ки с помощью расширения для лисы. А оно отказывается работать, если к window был применён метод stop().
 
Можно ли приостановить загрузку сайта, не прибегая к window.stop()?

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 18:47 25-06-2019 | Исправлено: Sanatory, 19:14 25-06-2019
Mavrikii

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

Цитата:
ли приостановить загрузку сайта, не прибегая к window.stop()

нельзя сделать манипуляции и сохранение по быстрому?  
если идет дальнейшая загрузка чего либо через js - можно просто очистить обработчики событий.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:55 25-06-2019
Sanatory



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

Цитата:
нельзя сделать манипуляции и сохранение по быстрому?  
если идет дальнейшая загрузка чего либо через js - можно просто очистить обработчики событий.

 
Мне вообще не надо, чтобы что-то загружалось на странице.

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 21:14 25-06-2019
Mavrikii

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

Цитата:
Мне вообще не надо, чтобы что-то загружалось на странице.

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:49 25-06-2019 | Исправлено: Mavrikii, 21:50 25-06-2019
Sanatory



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

Цитата:
проще отрубить то, что подгружает доп инфу.
 
или сделать теневую копию существующего DOM с ней работать.

 
То есть, "поставить загрузку страницы на паузу" никак нельзя?

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 22:09 25-06-2019
Mavrikii

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

Цитата:
"поставить загрузку страницы на паузу"

только вызовом дебаггера, но там свои заморочки.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:23 25-06-2019
Sanatory



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

Цитата:
только вызовом дебаггера, но там свои заморочки.

К сожалению, мне это не подойдёт.
Спасибо за советы, пойду думать.

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 22:24 25-06-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanatory
а чем плохая идея shadow root?
https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot
то, что говорил, о копировании DOM как есть в нужный момент и манипуляции с копией?
ее потом можно вернуть обратно, вместо конечного оригинального.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:11 25-06-2019
Sanatory



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

Цитата:
а чем плохая идея shadow root?

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

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 23:36 25-06-2019
Mavrikii

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

Цитата:
Это значит, надо разбираться, чтобы понять, как именно это может помочь приостановить загрузку страницы

просто создается слепок существующего DOM и над копией проводятся нужные операции.
ничем не отличается от обычного. ну разве что не отображается.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:49 25-06-2019 | Исправлено: Mavrikii, 23:49 25-06-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

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