На самом деле я работал над этим, используя API localStorge. Примечание: чтобы использовать это, наш contentcript должен быть в состоянии прочитать localStorage. В файле manifest.json просто добавьте строку «storage»:
"permissions": [...,"storage"]
Функция hijack находится в скрипте содержимого:
function hijack(callback) {
"use strict";
var code = function() {
//We have access to topframe - no longer a contentscript
var ourLocalStorageObject = {
globalVar: window.globalVar,
globalVar2: window.globalVar2
};
var dataString = JSON.stringify(ourLocalStorageObject);
localStorage.setItem("ourLocalStorageObject", dataString);
};
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
callback();
}
Теперь мы можем вызывать из contentcript
document.addEventListener("DOMContentLoaded", function(event) {
hijack(callback);
});
или если вы используете jQuery в вашем файле содержания, как я:
$(document).ready(function() {
hijack(callback);
});
, чтобы извлечь содержимое:
function callback() {
var localStorageString = localStorage.getItem("ourLocalStorageObject");
var ourLocalStorageObject= JSON.parse(localStorageString);
console.log("I can see now on content script", ourLocalStorageObject);
//(optional cleanup):
localStorage.removeItem("ourLocalStorageObject");
}
Это может быть вызвано несколько раз поэтому, если ваша страница изменяет элементы или внутренний код, вы можете добавить прослушиватели событий для обновления вашего расширения новыми данными.
Редактировать: я добавил обратные вызовы, чтобы вы могли быть уверены, что ваши данные не будут недействительными (была эта проблема сама)
Это можно выбрать при настройке функции, включая плагин. Перейдите в список плагинов, выберите свой плагин и отметьте «Распаковать архив плагина после установки».
Возможно, это свойство должно определяться самим плагином. Есть отчет об этом https://bugs.eclipse.org/bugs/show_bug.cgi?id=157562
с уважением, Влад