манифест. json
{
"manifest_version": 2,
"name": "F",
"version": "1.0",
"icons": {
"16": "images/empty_16.png",
"32": "images/empty_32.png",
"48": "images/empty_48.png",
"64": "images/empty_64.png",
"128": "images/empty_128.png"
},
"content_scripts": [
{
"matches": [ "https://*/","http://*/"],
"js": [ "scripts/extract.js"],
"run_at": "document_end"
}
],
"permissions": ["http://*/","https://*/"],
"browser_action": {
"default_icon": {
"16": "images/empty_16.png",
"32": "images/empty_32.png",
"48": "images/empty_48.png",
"64": "images/empty_64.png",
"128": "images/empty_128.png"
},
"default_title": "F",
"default_popup": "popup/popup.html"
}
}
всплывающее окно. html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script src="popup.js"></script>
<title></title>
</head>
<body>
<button id="get_ids">Get IDs</button>
<button id="get_ans">Get Ans</button>
<button id="send_ans">Send Ans</button>
</body>
</html>
всплывающее окно. js
var wait={};
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('get_ids').addEventListener('click', getIDS());
document.getElementById('get_ans').addEventListener('click', getAns(wait));
document.getElementById('send_ans').addEventListener('click', sendAns());
})
function getIDS(){
// on first page, with 'user' rights
//some POST requests with fetch, need to be run on web page context, just like from console
//JSON answer from server needs to be saved somwhere, example answer: wait = {"tasks_count":2,"tasks":[{"id":00001,"num":1},{"id":00002,"num":2}]};
}
function getAns(wait){
// on second page, with 'admin' rights
//some fetches to server while not all IDs from wait are in quests.
//should save somewhere object with answers named quests.
}
function sendAns(){
// on first page
//should send some fetches based on current page location
//fetch example: fetch("<https address>/rest/secure/api/answer/<variant id>/<question id>", {"headers": {<some headers>},
//"body": "{\"answer\":{\"id\":\"<id>\",\"@answer_type\":\"answer/single\"}}",
//"method": "POST",
//"mode": "cors",
//"credentials": "include"});
// answer types are different, can be extracted from json from second page (getAns function).
}
извлечение. js пусто
Ожидаемая работа: Нажмите кнопку «Получить идентификаторы» на странице «пользователя», объект ожидания должен быть обновлен с извлеченными данными. Затем на странице «admin» нажмите «Get Ans», объект квеста теперь должен содержать необходимые вопросы (с идентификаторами из объекта ожидания), вопросы - это массив объектов {id:XXX,question:"",content:[],answers_hr:{},answers_send:{}}
(answers_hr удобен для чтения, answers_send - это то, что отправлять через sendAns ()). Затем на странице 'user' нажмите Send Ans, функция sendAns должна вызывать () на сервер для каждого вопроса ожидания, кроме вопросов с типом "answer / free". Когда появляется этот тип, сценарий должен остановиться, предупредить пользователя, чтобы он вводил ответ во входных данных, отправил его и продолжил.
Реальность: Сценарии не выполняются. Будут ли объекты сохранены для разных страниц? Если нет то как их перенести?