|
3 / 3 / 0
Регистрация: 11.07.2012
Сообщений: 54
|
|
Инициализация окон и вкладок браузера04.07.2013, 13:52. Показов 2590. Ответов 8
Метки нет (Все метки)
Товарищи, выручайте! Есть у меня одно приложение в WEB на базе XMPP + Strophe. Проще говоря чат, соединение с сервером происходит при помощи Strophe (JS библиотеки), то есть на стороне клиента. Данная библиотека позволяет перехватывать соединение уже установленное в начале. То есть я устанавливаю соединение один раз, сохраняю идентификатор сессии в cookie и на других страницах перехватываю его той же библиотекой. Принцип, я несколько упростил для понимания. Этот способ отлично работает, до тех пор пока пользователь не пожелает открыть мое же приложение скажем во второй вкладке брауезера. В этом случае у меня получается два идентичных соединения, что неприемлемо для сервера XMPP и он разумеется обрывает его, в итоге обе вкладки остаются без соединения.
Задачу подобную решить можно, мне лишь необходимо, в случае, если это вторая вкладка моего же приложения, не перехватывать старое соединение, а создать новое. Отсюда главный вопрос: можно ли каким то образом используя cookie, jquery и т.п. точно определить является ли данная вкладка отличной от основной? То есть, я могу однозначно в коде выяснить является ли данное окно дополнительным? Я по крайней мере не нашел способа как это определить. На англоговрящих форумах, посвященных XMPP спрашивал как они решают соединение в многих вкладках, ответ всегда однозначен: "во второй вкладке используй другое соединение", что и без их было понятно, но когда начинаешь уточнять как именно определить, что это вторая вкладка ребята отвечали молчанием. Добавлено через 2 часа 29 минут Короче говоря, пока придумал только один способ: хранить параметры сессии в window.name значение этого свойства не меняется при перезагрузке страницы. Мне необходимо хранить всего 4 параметра, можно хранить в виде строки, а для удобного изменения конвертировать в JSON, менять и обратно конвертировав в строку сохранять в window.name. Пока это единственное решение, есть еще идеи ребята?
0
|
|
| 04.07.2013, 13:52 | |
|
Ответы с готовыми решениями:
8
Как получить массив вкладок одного из окон браузера Google Chrome? Взаимодействие окон/вкладок Самостоятельное открывание окон и вкладок браузера с рекламой |
|
33 / 33 / 6
Регистрация: 14.03.2013
Сообщений: 89
|
|
| 04.07.2013, 14:56 | |
|
А если хранить флаг в localstorage?
0
|
|
|
3 / 3 / 0
Регистрация: 11.07.2012
Сообщений: 54
|
|
| 04.07.2013, 15:08 [ТС] | |
|
alokazay, ну насколько я понимаю localstorage не является кроссбраузерным решением, а мне нужно что бы это работало начиная с IE6, будь он не ладен.
Добавлено через 8 минут С другой стороны, что мне мешает использовать localstorage во всех нормальных браузерах, кроме чертового IE. Он пусть хранить в widnow.name. На сколько я понимаю кроссбраузерного window.localstorage нет и быть не может, потому что если у IE такого свойства у window нет, то его просто нет, так?
0
|
|
|
33 / 33 / 6
Регистрация: 14.03.2013
Сообщений: 89
|
|
| 04.07.2013, 15:14 | |
|
localstorage поддерживает ИЕ 8+, сколько у вас посетителей с ИЕ 6 ? 1% ? + еще пол процента ИЕ 7 ? Так что вам решать переходить на новый технологии или нет. да и куки можно использовать без проблем.
0
|
|
|
3 / 3 / 0
Регистрация: 11.07.2012
Сообщений: 54
|
|
| 04.07.2013, 15:30 [ТС] | |
|
alokazay, сейчас проверил. localstorage, так же как и cookie не подходит. Я сперва подумал localstorage уникально для каждого окна, но localstorage, так же как и cookie общее для всей сессии браузера в рамках данного домена.
Алгоритм такой: я должен проверить значение хранилища (я пока предполагаю использовать window.name), если там есть данные (значит сессия) в рамках этого окна уже была создана, значит я ее перехватываю, если же данных нет, значит это новое окно\вкладка, значит нужно создать новое подключение и индентификатор сессии поместить в хранилище (window.name), для того, что бы не создавать новых подключений, если пользователь в рамках этого окна\вкладки будет перемещаться по ссылкам.
0
|
|
|
33 / 33 / 6
Регистрация: 14.03.2013
Сообщений: 89
|
||||||
| 04.07.2013, 16:14 | ||||||
0
|
||||||
|
3 / 3 / 0
Регистрация: 11.07.2012
Сообщений: 54
|
|
| 04.07.2013, 16:17 [ТС] | |
|
alokazay, я не совсем понял что имеется ввиду. Подключение отключение от XMPP во время смены страниц? Таким образом у меня реализовано сейчас, но этот временный, аварийный вариант требует нормализации и поэтому я тут. Потому что подключение\отключение нагружает XMPP.
Ну а если я не правильно понял ваше предложение, тогда объясните подробнее ход вашей мысли
0
|
|
|
33 / 33 / 6
Регистрация: 14.03.2013
Сообщений: 89
|
|
| 04.07.2013, 16:26 | |
|
если пользователь в первый раз зашел записываем в переменную +1, если покидает страницу - 1, получается если вкладок больше чем 0 значит вы понимаете что у вас открылась еще одна вкладка .. ну это если я правильно понял ход ваших мыслей
0
|
|
|
3 / 3 / 0
Регистрация: 11.07.2012
Сообщений: 54
|
|||||||||||
| 04.07.2013, 16:40 [ТС] | |||||||||||
|
alokazay, вы правильно меня поняли, но в рамках поставленного мною вопроса, а я не посвящал в детали работы XMPP. Дело в том, что там не так все просто. У меня есть три параметра сессии, один из них должен увеличиваться каждый раз при ответе от XMPP, это условие безопасности. Поэтому мне не так важно понять сколько новых вкладок у меня открыто. Мне гораздо важнее в рамках каждой вкладки иметь хранилище, которое не будет сбрасываться при перезагрузке страницы. И это хранилище должно быть уникальным в рамках данного окна\вкладки Например:
Вкладка 1:
Вкладка 2
0
|
|||||||||||
| 04.07.2013, 16:40 | |
|
Помогаю со студенческими работами здесь
9
Восстановление вкладок Chrome двух окон Самопроизвольное открытие вкладок и окон с рекламой Открытие окон/вкладок с рекламой в Хроме
Произвольное открытие браузера и вкладок с рекламой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|