|
3 / 3 / 0
Регистрация: 11.07.2012
Сообщений: 54
|
|
Инициализация окон и вкладок браузера04.07.2013, 13:52. Показов 2609. Ответов 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 двух окон Самопроизвольное открытие вкладок и окон с рекламой Открытие окон/вкладок с рекламой в Хроме
Произвольное открытие браузера и вкладок с рекламой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|