Использование greasemonkey и / или gmail API для уменьшения ширины почтовой панели - PullRequest
2 голосов
/ 09 ноября 2009

Я на пути к созданию сценария greasemonkey для gmail.

Первое, с чем я хочу поиграть, это уменьшить размер основной панели. Здесь либо находится список электронных писем, либо отображается сообщение электронной почты.

Используя Firebug, я могу найти два отдельных экземпляра тега <div class="nH nn" style="width: 1013px;">. Один изменяет ширину фона соответствующей панели, другой изменяет ширину сообщений, содержащихся в панели. Используя Firebug, я могу изменить значения ширины в каждом из этих тегов, чтобы средняя панель занимала, например, половину доступного пространства.

Как мне это сделать с помощью Greasemonkey?
GmailAPI - это путь?
GmailGreasemonkeyApi wiki не дает подробного описания для каждого метода. gmail.getMastheadElement() может быть, это будет?

Или лучше использовать стандартный поперечный подход DOM, чем работать с API? Если так, я не уверен, как предназначаться для тех определенных дивов. Они используют только классы "nH nn" для идентификации, которые, кажется, многократно используются в коде gmail.

Спасибо.

UPDATE: Жаль, что мы не могли бы поместить код в ответы на ответы ... вот что я пытаюсь сделать. Где это идет не так?

window.addEventListener('load', function() {
  if (unsafeWindow.gmonkey) {
    unsafeWindow.gmonkey.load('1.0', function(gmail) {

      gmail.getActiveViewElement().style.width = "500px";

    });
  }
}, true);

1 Ответ

1 голос
/ 09 ноября 2009

Gmail Greasemonkey API - это путь.

gmail.getActiveViewElement (вместе с gmail.getActiveViewType) - это то, что вы ищете.

Редактировать: Отвечая на ваш комментарий - я никогда не пробовал этого раньше, но набрал следующее в моей консоли firebug (когда gmail был открыт и gm включен), и он работал отлично (уменьшил ширину просмотр разговоров).

gmonkey.load("1.0", function() { 
    var gmail = gmonkey.get("1.0");
    gmail.getActiveViewElement().style.width = "500px";
});

Кроме того, вы можете визуально проверить, какой элемент возвращается функциями, если вы console.log элемент. Когда вы наводите курсор мыши на результат в консоли, Firebug выделяет его в HTML-документе.

Редактировать 2 : у меня сработало следующее.

window.addEventListener('load', function() {
  if (unsafeWindow.gmonkey) {
    unsafeWindow.gmonkey.load('1.0', function(gmail) {
      setTimeout(function() {gmail.getActiveViewElement().style.width = "500px";},0);
    });
  }
}, true);

Теперь я понятия не имею, почему здесь помогает setTimeout. Может быть, gmail делает много своих собственных манипуляций с dom в window.load, скрывая ваши изменения. Вот связанное ТАКОЕ обсуждение об этом!

...