Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   запомнить окно (https://javascript.ru/forum/misc/24898-zapomnit-okno.html)

qwertyuiop10 18.01.2012 11:53

запомнить окно
 
Цель такая, сраницу открыли в определённом окне, полазили по другим страницам сайта, если окно то же - true, если лазят в другой вкладке - false. Например пользователь настроил интерфейс сайта, и нужно, чтобы это распрастранялось только на данную вкладку браузера. Может я не понимаю каких-то простых вещей, но всё же, как «пометить» окно?

dmitriymar 18.01.2012 12:39

нихрена не ясно.
отслеживать событие фокуса окна

qwertyuiop10 18.01.2012 23:32

Вообще мне это для user javascript надо, на компе в Опере можно запускать скрипты для отдельного окна, в Опера Мобаил - нет. Суть в чём: пользователь для запуска скрипта вводит в адрнсную строку javascript:myJS.имяСкрипта(); Запускается скрипт, который запоминает, что он запущен, с помощью куки и local.storage, пользователь лазит по другим страницам, скрипт включен, всё ок, только нужно ограничить его действия в одной вкладке, тоесть скрипт работает только в той вкладке, где его запустили.

qwertyuiop10 18.01.2012 23:54

(
function(){
try{

//функция вкл-выкл
function trololo(t){
t?myJS.setCookie("trololo",1,{path:"/"}):myJS.setCookie("trololo",null,{expires:-1,path:"/"});
//в зависимости  от параметра сохранить куку или удалить
myJS.trololoGo();
}

function trololoGo(){
//сам скрипт
var war=myJS.getCookie("trololo");
//считали куки
if(war){
//если установлены, выполнить
/*

тело скрипта

*/
}}

window.myJS=window.myJS||{};
window.myJS.trololo=trololo;
window.myJS.trololoGo=trololoGo;
//перенесли в глобал
myJS.onReady(myJS.trololoGo);
//запустили при загрузке DOM
}catch(e){alert("trololo.js:\n"+e)}
})();


Функции для работы с куки и onReady, лежат в др. файлах, думаю их действие объяснять не надо. Скрипт упросил значительно, оставил только структуру. Скрипт будет работать во всех вкладках, а нужно только в той, в которой запустили. Как это сделать?

popov654 21.01.2012 00:50

С какой стати он будет работать во всех вкладках, если у каждой вкладки свой объект window? :blink: Или я чего-то не понимаю?

melky 21.01.2012 01:07

в консоль
window.name = "just fine";

далее, проверяем. там же :
alert(window.name); //just fine.

откройте ещё вкладку и проверьте window.name в ней. будет "" (пустая строка)

теперь в "помеченной" вкладке потыкайте на ссылки. напр, новые сообщения. далее опять проверьте имя окна :
alert(window.name); //just fine.


таким образом можно запомнить окно.

popov654 21.01.2012 01:34

И я про то же.
Кстати, trololo() и war - это сильно :lol:
Хотя, ИМХО лучше чем var var

qwertyuiop10 24.01.2012 16:55

popov654,
это user js, запуск висит на onReady, будет работать во всех окнах

qwertyuiop10 24.01.2012 16:58

melky,
гавнокод, потому что код упрощал, впадлу было имена придумывать

qwertyuiop10 25.01.2012 02:04

Цитата:

Сообщение от melky (Сообщение 152675)
решил задачу другим способом, более трудоёмким и кодоёмким.

Можно подробнее пожалуйста?


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