Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с Браузерами (https://javascript.ru/forum/dom-window/54540-problema-s-brauzerami.html)

danik.js 24.03.2015 09:00

Цитата:

Сообщение от YaroBest
спасибо за совет, выходит без JQuery ничего не выйдет?

Не слушай их. Разберись сначала с чистым js. Пиши под современные браузеры. Если нужно чтобы работало и в старье, но не хочешь разбираться в багах/различиях старых браузеров, тогда используй jquery.

Цитата:

Сообщение от YaroBest
не могу понять как так получается что один и тот же код в разных браузерах себя по-разному ведет (ну, почти :) )

Не совсем. Код себя одинаково ведет. Но в старых браузерах ущербная объектная модель документа. Вот ты юзаешь window.innerHeight. А в старых IE нет такого свойства.

У тя проблема не в этом. Во-первых, какого хрена ты напихал в код setInterval'ов? Их вообще не должно быть, это неправильный подход. Получается ты используешь что-то вроде "метода тыка". Еще ты почему-то боишься массивов. Вместо slides у тебя отдельно slide0, slide1 и т.д.
Почему ты меню выдвигаешь каждый пункт отдельно - неясно. Не проще ли задать -100% родителю?
Цитата:

автоматическое выравнивание слайдов (если застряли на пол экрана)
Это вообще порадовало. Это как вообще? Вот из-за твоих интервалов и появляется ненужная энтропия.

Изучай "классы". Вместо того чтобы раскидывать по всей страницы кучу переменных и функций для работы с ними, объединяй их по смыслу в группы - в объекты. Несколько свойств + методы для работы с ними. Допустим меню:

class Menu() {
    constructor(selector) {
        this.items = document.querySelector(selector).children;
        this.active = -1;
        this.setActive(0);
        this.setupListeners();
    }
    setActive(index) {
        this.active = index;
        this.items[index].classList.add('active');
    }
    setupListeners() {
        for (var i = 0; i < this.items; i++)
            this.items[i].onclick = this.setActive.bind(this, i); // ES5, не работает в старье
    }
}
var menu = new Menu('.menu');

menu.setActive(1);


Анимацию проще сделать на css3. В старье будет без анимации. Ну и че? Почти всегда старый браузер == старый комп == тормоза при анимации. Так что все справедливо.

Вот короче тебе заготовка: http://jsfiddle.net/danya_postfactum/z8cLa59g/
Только событие wheel не кроссбразерное. Нужны костыли для событий DOMMouseScroll (FF старый), mousewheel (chrome старый, ie8).
Работает во всех нормальных браузерах, в IE10+. Только меню я побыстрому отцентрировал через css3. Подключи classList.js с просторов инета и заработает в IE9. Подключи addEventListener.js и почти что заработает в IE8, правда без анимации.

YaroBest 26.03.2015 20:42

да, не думал я когда за js садился что будет все так сложно, может это все ж не мое, хз, уже 4 месяца учу, а толку 0.

уж подумал тут на меня забили :) спасибо за инфу, буду разбираться...

danik.js 26.03.2015 22:09

Цитата:

Сообщение от YaroBest
может это все ж не мое, хз, уже 4 месяца учу, а толку 0.

Не знаю, мне по коду показалось, что его написал понимающий человек. Да, новичек, да, неправильный подход, но для начала пойдет.

На старые браузеры не обращай внимания, их пора забывать уже. Изучи "классы" (конструкторы, прототипы) и события и будет проще.

danik.js 26.03.2015 22:11

Насчет интервалом. Там они должны быть, верней setTimeout, а еще верней - requestAnimationFrame. Нужны для анимации, покадровой. У меня в коде ее нет, я использовал css3 анимацию.

kostyanet 27.03.2015 06:36

Цитата:

Сообщение от YaroBest
вот собственно сайт: http://dropmefiles.com/4ZFtt

Сайт нормально работает, но берут сомнения что это ваш. Я его давно видел.

При чем тут яндекс-браузер? Такого браузера нет. Загляните в статистику сайта и увидите какие есть, а каких нет.

YaroBest 27.03.2015 14:08

Цитата:

Сообщение от kostyanet (Сообщение 363507)
Сайт нормально работает, но берут сомнения что это ваш. Я его давно видел.

идея создания такого сайта с background-video возникла задолго до того как я начал изучать первые html тэги :)
прокрутку я увидел здесь. отсюда же, собственно говоря, и динамические слайды. я хз как у них там все написано, я и сам вижу что с интервалами косячно вышло, но, имхо, для маленького сайтика с маленьким кол-вом посетителей для начала было бы норм, если бы не...

Цитата:

Сообщение от kostyanet (Сообщение 363507)
При чем тут яндекс-браузер? Такого браузера нет. Загляните в статистику сайта и увидите какие есть, а каких нет.

вот этот браузер я имел ввиду. он меня подводить начал... а ну и мозилла... и експлорер :)

ладно, пофиг, будем лучше сразу делать как дядьки говорят


Часовой пояс GMT +3, время: 09:09.