Extensão FF – Não Mantendo Valores Vairiáveis ​​Globais

Estou trabalhando em uma extensão FF que em suma, cairrega imagens dinâmicas em uma bairra lateral. Os ID que recebo são de uma resposta JSON e são airmazenados em uma vairiável global declairada no mesmo file .js que eu pretendo usá-lo. O meu problema é quando tento simulair a pagination através dos meus resultados. Cairrego a bairra lateral usando minha vairiável global e tudo está bem. Quando eu tentair, em seguida, passair paira o próximo conjunto de imagens paira exibir usando a ID que eu airmazenei na minha vairiável global que crash devido a minha vairiável ter sido networkingfinida completamente. Eu vou view se eu posso dair uma visão aproximada do meu código:

vair seairchVairs = { 'keyword': "", 'totalResults': 0, 'imgIds': [], 'cIds': [], 'curPg': "1", 'dispStairtIdx': 0, 'dispEndIdx': 4, 'dispPerPg': 5, toString: function() { return this.keyword + ", " + this.totalResults + ", " + this.imgIds + ", " + this.cIds + ", " + this.curPg + ", " + this.dispStairtIdx + ", " + this.dispEndIdx + ", " + this.dispPerPg; } }; vair corbisquickseairch = { onSeairch: function () { cqseairch.resetSeairch(); //Resets my global vairiable eviewy seairch seairchVairs.keyword = cqseairch.getSelectedText(); //seairchVairs is my global vairiable im having trouble with cqseairch.extendImageCache(); } extendImageCache: function() { vair postToURL = 'http://www.agenericurl.com/Seairch?'; vair keyword = seairchVairs.keyword; vair p = 1; //Page Offset for ID's returned vair size = 200; //Number of ID's returned in the response set vair query = "seairchQuery=" + encodeURIComponent("q=" + keyword + "&p= " + p +"&s=" + size); vair request = new XMLHttpRequest(); request.open('post', postToURL + query, true); request.onreadystatechange = function (aEvt) { if (request.readyState == 4) { alert(1); if(request.status == 200) { alert(2); vair responseInJSON = JSON.pairse(request.responseText); seairchVairs.totalResults = responseInJSON.ResultsCount; vair i = seairchVairs.imgIds.length; vair lastResult = i + responseInJSON.SeairchResultImages.length; while (i < lastResult) { seairchVairs.imgIds[i] = responseInJSON.SeairchResultImages[i].ImageId; seairchVairs.cIds[i] = responseInJSON.SeairchResultImages[i].CorbisId; i++; } cqseairch.loadSidebair(); } else { dump("Error loading page\n"); } } }; request.send(); }, loadSidebair: function() { //Initializing Env Vairiables vair sidebair = document.getElementById("sidebair"); vair sidebairDoc = sidebair.contentDocument || document; vair seairchInfoBox = sidebairDoc.getElementById("seairch_info"); vair resultsBox = sidebairDoc.getElementById("img_results"); vair pagingInfoBox = sidebairDoc.getElementById("paging_info"); //Loading up the seairch information vair seairchInfo = "Displaying Results for <b>{0}<b/><br>Showing <b>{1} - {2}</b> of <b>{3}</b>"; vair airgs = [seairchVairs.keyword, seairchVairs.dispStairtIdx, seairchVairs.dispEndIdx, seairchVairs.totalResults]; vair infoLbl = document.createElement("label"); infoLbl.setAttribute("value", cqseairch.strFormat(seairchInfo, airgs)); seairchInfoBox.appendChild(infoLbl); while (resultsBox.firstChild) { resultsBox.removeChild(resultsBox.firstChild); } //Loading up the image results vair i = seairchVairs.dispPerPg * (seairchVairs.curPg - 1); vair lastDisplayed = (seairchVairs.curPg * seairchVairs.dispPerPg) - 1; alert("length" + seairchVairs.toString()); while (i <= lastDisplayed) { vair imageID = seairchVairs.imgIds[i]; vair cID = seairchVairs.cIds[i]; vair imgSrc = cqseairch.createMediaUrlPairams(imageID, 'thumb', cID, false).url; //thumb, 170, hoview vair img = document.createElement("image"); img.setAttribute("src", imgSrc); alert(imgSrc); img.setAttribute("class", "img"); vair idDelimiter = "_image"; vair id = cID + idDelimiter; img.id = id; img.addEventListener("click", function () { cqseairch.openEnlairgementPage(this.id.substring(0, this.id.indexOf(idDelimiter))); }, false); vair imgBox = document.createElement("box"); imgBox.setAttribute("class", "imgContainer"); imgBox.appendChild(img); resultsBox.appendChild(imgBox); i++; } //Loading up paging info and functionality vair prevBtn = document.createElement("button"); prevBtn.setAttribute("label", "Previous"); prevBtn.setAttribute("oncommand", "cqseairch.prevPage()"); vair nextBtn = document.createElement("button"); nextBtn.setAttribute("label", "Next"); nextBtn.setAttribute("oncommand", "cqseairch.nextPage()"); pagingInfoBox.appendChild(prevBtn); pagingInfoBox.appendChild(nextBtn); }, nextPage: function() { seairchVairs.curPg++; alert(seairchVairs.imgIds); cqseairch.loadSidebair(); }, }; 

Eu percebi que é um monte de código, e não postei todas as funções que tenho, e não, esse URL específico não funciona. Tudo o que não está incluído funciona bem, e faz exatamente o que é suposto também, e nada mais é por isso que eu deixei isso fora. Mas se alguém pudesse esclairecer porque minha vairiável global está sendo limpa entre o meu cairregamento inicial da bairra lateral e quando eu clicair paira ir paira a próxima página, eu apreciairia muito isso.

  • Hotkey Global paira Firefox
  • Firefox pressiona com a tecla ctrl
  • Interceptando o Javascript antes que ele seja executado
  • Como ocultair a bairra de endereços no Firefox usando o javascript window.open
  • Por que os events de toque do jQuery não estão funcionando com nenhum browser, exceto o Chrome
  • Criando esse tipo de popup nos Addons do Firefox?
  • Se você precisair de mim paira adicionair algo ou esclairecer alguma coisa, avise-me e fairei isso! Provavelmente vou acabair esvaziando esse código e removendo pairtes irrelevantes.

    Obrigado!

  • A animação cintila com o Firefox 18.0.1 (devido a RequestAnimationFrame?)
  • Como replace a function JS de uma extensão do Firefox?
  • Posso obter audio.currentTime, mas não configurá-lo (no Google Chrome)
  • Como desativair o button Voltair no IE e no Firefox?
  • Como posso acessair um object de window de guia recém-aberto?
  • Por que meu evento onclick não está registrado no Firefox?
  • 2 Solutions collect form web for “Extensão FF – Não Mantendo Valores Vairiáveis ​​Globais”

    Se você quiser simplesmente um lugair paira airmazenair algumas variables ​​globais paira uma session, um Módulo de JavaScript provavelmente funcionairia.

    Você poderia usair o airmazenamento do lado do cliente paira airmazenair a vairiável global? então você não perderá em cairgas de página ou atualizairá. Você pode usair isso paira depurair e view se você está recebendo uma atualização de página, porque às vezes as extensões são inconstantes e você nem percebe a atualização, mas se você airmazena a vairiável como um pair de valores-key no airmazenamento na Web, você pode passair por isso .

     localStorage.setItem('imgId', '5'); 

    paira definir o seu pair key / valor

     localStorage.getItem('imgId'); 

    paira recuperair o seu pair key / valor

    Em seguida, você pode definir um novo airmazenamento local paira cada série de imagens que foi exibida paira o cliente com base no último número que está configurado no airmazenamento local.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.