Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.12.2012, 22:37
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от dmitry111
Как заставить браузер игнорировать действия пользователя при выполнении ajax?
твой вопрос печалит мастера йоду
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #12 (permalink)  
Старый 03.12.2012, 23:17
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

nerv_,

это я просто всю ночь пытался решить вопрос самостоятельно, к утру задал, из тех сил что остались)
Ответить с цитированием
  #13 (permalink)  
Старый 04.12.2012, 12:05
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

я нашел более (по моему мнению) аккуратный способ.

В моем ajax во время загрузки появляется полоска загрузки, я ее поставил как условие перед выполнением очередного запроса:

if (document.getElementId("wait")) {
    return;
}
Ответить с цитированием
  #14 (permalink)  
Старый 04.12.2012, 13:24
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Дзен-трансгуманист
Почему тебе так не нравится флаг?
флаги бывают разные







__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #15 (permalink)  
Старый 04.12.2012, 14:40
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

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

Вот логика с ajax:

Пользователь кликнул:
1 Если элемент wait есть:
return;
2 Если элемента wait нет:
включить wait
запрос на сервер
обработка запроса
отключить wait


Сообщение от Дзен-трансгуманист
Почему тебе так не нравится флаг? Это всего-лишь переменная, отражающая состояние сущности - аякс-запроса. Определи ее в замыкании, и экспортируй нужный паблик-интерфейс в глобал. В чем проблема?
Ну тут есть несколько причин:
1 Я помещаю в глобальные переменные только те значения, которые используются в нескольких независимых функциях
2 Переменные должны иметь только значения, используемые программой и эти значения должны быть константой и желательно понимаемые без комментариев

В чем недостаток флага:
1 если скрипт небольшой то терпимо, если скрипт большой и расширяемый, то таких флагов будет все больше и больше и каждый флаг нужно будет описывать.
и будет вот так:
forAJAX = false,
forCache = false,
forLoad = false
,,,,,,,,,,,,,


2 Функция может быть на 5457 строчке, глобальные переменные принято описывать вверху. Когда глобальные переменные не содержат лишних вещей и представляют что-то вроде:
sml = document.getElementById("glob"), //////////////////// контейнер glob
set = document.getElementById("set"),  ///////////////////// контейнер set
libs = document.getElementById("libs"), ///////////////////// библиотеки

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


Не знаю может я не прав, я js изучаю всего полгода.. может в будущем изменю свое мнение и буду использовать флаги)

Последний раз редактировалось dmitry111, 04.12.2012 в 14:43.
Ответить с цитированием
  #16 (permalink)  
Старый 04.12.2012, 15:32
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от dmitry111
разве это может как-то привести к сбоям?
элемент твой другая программа или пользователь удалит и вуаля
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #17 (permalink)  
Старый 04.12.2012, 15:51
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от nerv_ Посмотреть сообщение
элемент твой другая программа или пользователь удалит и вуаля
Ну если это сделает другая программа, то это уже конфликты на уровне программ, что невозможно, потому как в моем случае - сайт это одна программа

Пользователь может удалить элемент с помощью firebag и больше никак. Так можно и весь сайт удалить)
Ответить с цитированием
  #18 (permalink)  
Старый 04.12.2012, 18:13
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от Дзен-трансгуманист
Твоя логика становится неотделима от интерфейса, а интерфейс неотделим от логики, меняя что-то одно, ты вынужден менять и всё остальное, ферштейн?

ну а как же по другому? Ведь все чем манипулирует js - это и есть элементы.
Или лучше делать так чтобы все элементы присваивались переменным в самом верху и манипулировать только этими переменными
Что-то вроде:

var a = document.getElementById("x"),
      b = document.getElementById("y"),
      c = document.getElementsByTagName("li");

// а уже дальше не обращаться напрямую к DOM, а манипулировать только переменными:

function goA () {   
}
function goB () {
}


при таком подходе все элементы назначаются вверху
Ответить с цитированием
  #19 (permalink)  
Старый 04.12.2012, 18:20
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

у меня много проблемных мест с использованием элементов вместо флагов

Например:

// если подсказка не открыта, открыть:
if (!document.getElementById("tooltip")) {
....
}

// если элемент не создан, создать
if (!document.getElementById("back")) {
}


и все это в самом коде. Это тогда тоже надо заменить флагами

Последний раз редактировалось dmitry111, 04.12.2012 в 18:50.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Как можно кешировать Ajax запрос ? saturn AJAX и COMET 5 27.10.2012 14:48
Не могу сделать ajax запрос jazzz13 AJAX и COMET 4 17.05.2012 16:31
Составить Ajax запрос и json LASSO jQuery 1 16.02.2012 03:36
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44