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

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

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

zzz528

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

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

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

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

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

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

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

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

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

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

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

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

Всего записей: 16424 | Зарегистр. 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 то загружается нормально, ничерта не пойму.
 

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

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

Всего записей: 16424 | Зарегистр. 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 - можно просто очистить обработчики событий.

Всего записей: 16424 | Зарегистр. 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 с ней работать.

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

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

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

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

Всего записей: 16424 | Зарегистр. 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 и над копией проводятся нужные операции.
ничем не отличается от обычного. ну разве что не отображается.

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