В моем скрипте содержимого есть глобальная переменная
var myint = 1;
var clicker;
Затем я запускаю таймер при загрузке страницы (и сохраняю идентификатор таймера в var clicker
)
window.onload = function () {
var elm = document.getElementById("my-container");
if (elm != undefined && elm != null) {
localStorage['launched'] = "yes";
} else {
clicker = setInterval(click, 30 * 1000);
}
}
Эта функция будет вызываться каждые 30 секунд (согласно setInterval
)
function click() {
//since myint is initialized with 1, this if should return true just once
if (myint > 0) {
myint = myint - 1; //myint becomes 0 so if should fail from now on...
clearInterval(clicker);
document.getElementById('elementID').click();
alert("clicking now");
}
}
Проблема в том, что при щелчке по ссылке она снова вызывает событие windows.onload и, следовательно, присваивает переменной clicker
новый идентификатор таймера setInterval.
Однако, поскольку myint
- это глобальная переменная, которую я установил в 0 внутри своего if, тогда if никогда не должен возвращать true, и поэтому я получаю щелчок только один раз (даже если таймер будет продолжать срабатывать).
Когда я отлаживал это, я обнаружил, что каждый раз, когда вызывается window.onload
, myint
сразу же снова сбрасывается в 1.
Как я могу получить myint
, чтобы сохранить его последнее состояние, которое 0
??
РЕДАКТИРОВАТЬ # 1
Вот мой манифест.json
{
"manifest_version": 2,
"name": "META Upgrader",
"version": "1.0.0",
"content_scripts": [{
"run_at": "document_start",
"js": ["content.js"],
"matches": [ "<all_urls>" ]
}],
"permissions": [
"background", "webRequest", "webRequestBlocking", "tabs", "<all_urls>"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"web_accessible_resources": ["jsui.js"]
}