Почему выполнение скрипта контента не продолжается после 2 перезагрузок? - PullRequest
0 голосов
/ 19 ноября 2018

Я делаю расширение, чтобы всегда побеждать на www.frikitrivial.com. Вся механика находится в файле скрипта контента, он должен перезагружать страницу каждый раз, когда URL-адрес вкладки равен "http://www.frikitrivial.com/end.php",, но после этого 2 раза он останавливается, я имею в виду, скрипт контента делает больше не выполняется. Я проверил это, написав console.log () в начале скрипта.

Спасибо.

Это код из файла сценария содержимого (вы можете игнорировать большую его часть).

console.log( "Iniciando partida..." )


let question, answers, _answers

if( location.href !==  "http://www.frikitrivial.com/end.php" ){
    question = document.querySelectorAll("div.question")[0].textContent
    answers = []
    _answers = document.querySelectorAll("a.answer")
    
    document.querySelectorAll("a.answer").forEach( e => answers.push( e.textContent ) )
}


function click( s ) {
    let c
    for( let i = 0; i < 4; i++ ) {
        if( s === _answers[i].textContent ) {
            c = _answers[i]
        }
    }
    console.log( "El siguiente elemento va a ser clickado..." )
    console.log( c )
    c.click()
}

chrome.storage.sync.get(["lastClicked"], function(result){
    if( result.lastClicked ) {
        console.log( "Leido lastClicked..." )
        if( location.href === "http://www.frikitrivial.com/end.php" ) { // manejamos fallo
            console.log( "Manejando fallo de pregunta..." )
            chrome.storage.sync.set({
                [result.lastClicked.question]: {
                    question: result.lastClicked.question,
                    answers: result.lastClicked.answers.shift(),
                    answered: false
                }
            }, () => chrome.runtime.sendMessage({redirect: "https://www.frikitrivial.com/game.php"}))
        } else { // actualizamos el estado de la ultima pregunta respondida
            if( !result.lastClicked.answered ){
                console.log( "Manejando lastClicked not answered..." )
                chrome.storage.sync.set({
                    [result.lastClicked.question]: {
                        question: result.lastClicked.question,
                        answers: result.lastClicked.answers,
                        answered: true
                    }
                }, answerNewQuestion)
            } else {
                console.log( "Manejando lastClicked answered..." )
                answerNewQuestion()
            }
        }
    } else {
        answerNewQuestion()
    }
})

function answerNewQuestion() {
    chrome.storage.sync.get([question], function(result){
        if( result.question ) { // si ya hemos intentado responder esta pregunta alguna vez
            if( result.question.answered ) {
                chrome.storage.sync.set( {
                    [result.question]: {
                        question: result.question.question,
                        answers: result.question.answers,
                        answered: result.question.answered
                    }
                }, () => click( result.question.answers[0] ) )
            } else {
                chrome.storage.sync.set( {
                    lastClicked: {
                        question: result.question.question,
                        answers: result.question.answers,
                        answered: result.question.answered
                    }
                }, () => click( result.question.answers[0] ) )
            }
        } else {
            chrome.storage.sync.set( {
                [question]: {
                    question: question,
                    answers: answers,
                    answered: false
                }
            }, function( result ){
                chrome.storage.sync.set( {
                    lastClicked: {
                        question: question,
                        answers: answers,
                        answered: false
                    }
                }, () => click( answers[0] ) )
            })
        }
    })  
}

А вот и манифест.json!

{
"name": "Getting Started Example",
"version": "1.0",
"description": "Build an Extension!",
"permissions": [
    "activeTab", 
    "declarativeContent", 
    "storage",
    "unlimitedStorage"
],
"background": {
    "scripts": ["background.js"],
    "persistent": true
},
"page_action": {
    "default_popup": "popup.html",
    "default_icon": {
        "16": "images/get_started16.png",
        "32": "images/get_started32.png",
        "48": "images/get_started48.png",
        "128": "images/get_started128.png"
    }
},
"icons": {
    "16": "images/get_started16.png",
    "32": "images/get_started32.png",
    "48": "images/get_started48.png",
    "128": "images/get_started128.png"
},
"content_scripts": [
    {
    "matches": ["http://www.frikitrivial.com/game.php*", "http://www.frikitrivial.com/end.php"],
    "js": ["contentScript.js"]
    }
],
"manifest_version": 2

}

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