Расширение Chrome, чтение содержимого элемента HTML - PullRequest
1 голос
/ 10 марта 2012

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

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

Очевидно, что трудно определить, какая часть HTML содержит содержимое электронной почты.Я предполагаю, что если идентификатор (или класс) HTML-элемента, который содержит контент, известен, то будет просто получить его, обработать и внедрить обратно.

Любая подсказка, чтолучший способ сделать это?Любые ссылки и отсканированные коды будут отличными. Помните, простота - это блаженство:)

Спасибо.

ОБНОВЛЕНИЕ

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

1 Ответ

5 голосов
/ 13 марта 2012

Возможно, вы захотите создать несколько сценариев содержимого (по одному для каждой службы), которые просто извлекают HTML из тела письма.При использовании document.querySelector каждый скрипт содержимого будет очень похожим, за исключением используемого селектора и требуемых перехватчиков JavaScript (см. Сноску).

Затем вы будете использовать передачу сообщений чтобы отправить HTML-код на фоновую страницу и где он будет затем обрабатываться и отправляться обратно в скрипт контента.

Скрипт контента

var element = document.querySelector('.gmail .email-body'); // Not actual selector
chrome.extension.sendRequest({
  html:    element.innerHTML, 
  service: 'gmail'
}, function (response) {
  element.innerHTML = response.html;
});

Страница фона

chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
  var element = document.createElement('div');
  element.innerHTML = request.html;
  // TODO: Manipulate `element` based on `request.service`...
  sendResponse({html: element.innerHTML});
  // Alternatively, you could just manipulate the HTML string itself.
});

Сноска

Из-за частоты обновления большинства популярных почтовых клиентов селекторы, вероятно, будут часто меняться.Кроме того, многие из этих клиентов заполняют все или часть страниц динамически, используя Ajax , поэтому вам, возможно, придется быть умным в том, как определить, когда тело письма отображается и изменяется.Теоретически это также означает, что ваши изменения могут быть легко удалены клиентом, динамически обновляющим электронную почту, поэтому вам может потребоваться множество хуков JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...