2009-07-23 7 views
0

На работе я использую чат Gmail, поскольку он зашифрован и записывает чаты без установки или сохранения чего-либо на жесткий диск. Дома я пользуюсь Пиджином. Когда я вошел в GMail дома, мне нужно выйти из чата, или сообщения попадут в неподходящее место. Когда я вошел в GMail на работе, мне нужно снова войти в чат.Войти в/из чата Gmail программно, нажав «ссылки» Gmail.

Другими словами, когда я запускаю Firefox дома, я хочу отключить чат Gmail автоматически. Когда я запускаю Firefox на работе, я хочу, чтобы чат Gmail включался автоматически.

Есть ли способ использовать сценарий Greasemonkey или аналогичный принудительный вход в систему и выход на определенные машины? Казалось бы, это достаточно просто; просто следуйте URL-адресу или имитируйте щелчок по ссылке. К сожалению, Gmail не использует реальные ссылки.

Хотя логаут:

<span tabindex="0" role="link" action="si" class="az9OKd">Sign into chat</span> 

В то время как войти в систему, в раскрывающемся меню:

<div tabindex="-1" id=":1mj" role="menuitem" class="oA" value="si"><div class="uQ c6"/>Sign into chat</div> 

<div tabindex="-1" id=":8f" role="menuitem" class="oA" value="sia"><div class="uQ c5"/>Sign into AIM®</div> 

<div tabindex="-1" id=":8e" role="menuitem" class="oA" value="so"><div class="uQ df"/>Sign out of chat</div> 

В нижней части страницы:

<span id=":im" class="l8 ou" tabindex="0" role="link">turn off chat</span> 

<span id=":im" class="l8 ou" tabindex="0" role="link">turn on chat</span> 

Кто знает, как «нажмите «эти не связанные ссылки с JavaScript или доступ к их функциям? Я бы предположил, что «так» означает «выходить», «си» означает «войти», а «сиа» означает «знак в AIM». Могу ли я как-то назвать эти действия напрямую?

Есть ли другая альтернатива для отключения чата?

+0

Я надеюсь, что щедрость не будет автоматически идти к кому-то, кто на самом деле не ответить на этот вопрос. Как имитировать нажатие одной из этих «ссылок» с помощью JavaScript/Greasemonkey? – endolith

ответ

2

Я использую gmail-чат как в окне gmail, так и с помощью Adium, а когда друг начинает чат, я получаю его или ее сообщение в обоих окнах, поэтому вход в два отдельных места не является проблемой.

Это не работает для вас?

EDIT: Как сказал комментатор ниже, вы можете расшифровать запутанный javascript gmail, чтобы попытаться выяснить, как ссылки привязаны к функциям javascript и какие функции вызывают. Тогда вам не нужно симулировать клик по ссылке, вам просто нужно вызвать соответствующую функцию javascript.

+0

Это происходит и со мной. Я оставляю свой чат Gmail, подписанный дома, и когда я подключаюсь к работе, я получаю сообщения и на работе. –

+0

Иногда это проявляется в обоих случаях, иногда это не так. Я использую Gchat и AIM внутри чата Gmail. Важно то, что в чате Gmail нет смысла подписываться, когда я уже подписал контракт с Pidgin на том же компьютере. – endolith

+0

Вы можете попробовать и расшифровать свой запутанный javascript и выяснить, какая функция вызывается для этих ссылок. – BabyCakes

1

Я не уверен, что вы знаете, но вы можете завершить сеанс Gmail удаленно. Нажмите на ссылку, которая говорит, что это в нижней части страницы Gmail:

Последняя активность счета: бла-бла Подробности

+0

Это не имеет никакого отношения к моему вопросу. – endolith

+0

Тогда я не понимаю вопроса. Ссылка в моем сообщении позволяет удаленно закрыть соединение Gmail, как это предложение «Когда я вхожу в GMail дома, мне нужно выйти из системы, или сообщения попадут в неподходящее место. Когда я вхожу в GMail на работе, у меня есть для входа в систему. " заставил меня поверить, что вы хотели. –

+0

Я имею в виду, что когда я вхожу в Gmail дома, я хочу отключить чат. Когда я вхожу в Gmail на работе, я хочу, чтобы чат был включен. Я не хочу выходить из моей домашней сессии с работы или моей рабочей сессии из дома, и это то, что вы описываете. Я просто хочу выйти из чата. Я попытался прояснить вопрос. – endolith

1

Могут ли люди по-прежнему общаться с вами, если это даже не отображается?

У меня есть только несколько контактов на Gchat, поэтому не может легко проверить ...

window.addEventListener('load', function() { 
    if (unsafeWindow.gmonkey) { 
    unsafeWindow.gmonkey.load('1.0', function(gmail) { 
     function logOffChat() { 
     var leftPane = gmail.getNavPaneElement().childNodes[0]; 
     var chat = leftPane.childNodes[3]; 

     chat.id = 'googleChatElement'; 
    chat.parentNode.removeChild(chat); 
     } 

     logOffChat(); 

    }); 
    } 
}, true); 

Моя догадка, она по-прежнему будет работать все в фоновом режиме, и вы будете казаться вошли в систему ...

+0

Просто попробовал другую учетную запись, и нет, она все еще остается в фоновом режиме. Хорошая попытка. :) – endolith

-1

Возможно, я не понимаю. Но можете ли вы попробовать использовать Selenium, чтобы как-то это понять? Его рамки для автоматизации функционального тестирования в веб-приложениях.

+0

Я никогда не слышал о Селене. Может быть, кто-то, кто знает, что они делают, должен использовать его, чтобы выяснить щелчок ссылки, а затем сказать мне решение. :) – endolith

+0

Возможно, что вы меня спрашиваете - это код и предоставить вам решение? Это нравится делать консалтинговые работы. Первый результат для селена в google - http://seleniumhq.org/ –

0

Добавление *chatenabled.mail.google.com* в список фильтров Adblock не позволяет подключиться к чату Gmail. Это решит мою проблему, хотя я не смог понять, как нажать «ссылку».

+0

Теперь это заставляет Firefox зависеть от моего процессора, возможно, от Adblock и Gmail, сражающихся друг с другом по этому поводу. Мне нужно найти другое решение. – endolith

+1

Этот бот процессора не может быть связан с adBlock, потому что на работе я отфильтровал chatenabled.mail.google.com (f * cking proxies), и когда окно чата видно, я получаю этот свиньи. Решение заключалось в том, чтобы поднять его, нажав знак минуса рядом с вашим именем. – diega

+0

Это работает и для меня. Благодаря! – endolith

2

Я знаю, что исходное сообщение устарело, но я отправляю его здесь для справки.

var evt = document.createEvent ("MouseEvents"); evt.initMouseEvent («click», true, true, window, 0, 0, 0, 0, false, false, false, false, 0, null); YourElement.dispatchEvent (evt);

ссылка dispatchEvent от: https://developer.mozilla.org/en/DOM/element.dispatchEvent

+0

Не могли бы вы объяснить, как это работает? – endolith

+1

document.createEvent создает общий объект события мыши, затем вы делаете этот общий объект событий мыши в клик и отправляете это событие на свой Пролет затем видит его так же, как щелчок мыши (не зная, что он ничем не отличается от человека, который нажимает на пролет. Единственное, что вам нужно изменить в этом примере - это то, что YourElement должен быть элементом span, который вы хотите Остальные - просто создать событие щелчка мыши. –

+0

Итак, я не могу понять, как заставить его запускать ссылки в вопросе, хотя, например, на основе value = «so». – endolith