Возможно, вы захотите создать несколько сценариев содержимого (по одному для каждой службы), которые просто извлекают 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.