سؤال

أحاول حاليًا حفظ علامة التبويب. ولكن لسبب ما ، يقوم popup.html بتحميل متغير التخزين المحلي السابق وليس المتغير الأخير.

كنت أتساءل عما إذا كان يمكن لأي شخص مساعدتي في هذا ، الرمز الذي أستخدمه هو هذا ؛

<script language="javascript">
var rule;
var links;
var search;

function loadcssfile(filename, filetype)
{ 
   if (filetype == "css")
   {   
       var fileref=document.createElement("link");
       fileref.setAttribute("rel", "stylesheet");
       fileref.setAttribute("type", "text/css");
       fileref.setAttribute("href", filename);
   }

   if (typeof fileref != "undefined")
   {   
       document.getElementsByTagName("head")[0].appendChild(fileref);
   }
}

function loaded()
{   
    chrome.tabs.getSelected(null,function(tab) 
    {   
        var temp;
        temp = tab.url;
        localStorage['tab'] = temp;
        console.log(temp);
    });

    links = localStorage['tab'];
    rule = localStorage['ok0'];
    search = links.indexOf(rule);

    if(search != -1)
    {   
        loadcssfile("./css/styles.css","css");
        loadcssfile("./button/styles2.css","css");
    }
    else
    { 
        // or load other css file 
    }
}

document.getElementById('datacontent').innerHTML = rule + "<br>" + links + "<br>" + search;


function createXMLHttpRequest()
{ 
    if (window.ActiveXObject)
    {   
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest)
    {   
        xmlHttp = new XMLHttpRequest();
    }
}

function createXMLHttpRequest2()
{  
    if (window.ActiveXObject)
    {   
        xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest)
    {   
        xmlHttp2 = new XMLHttpRequest();
    }
}

function handleStateChange1() 
{ 
   if(xmlHttp.readyState == 4 && xmlHttp.status == 200 ) 
   {   
       var data;
       data = xmlHttp.responseText;
       document.getElementById('container').innerHTML = data;
   }
}

function senddata(id)
{ 
   createXMLHttpRequest();
   xmlHttp.onreadystatechange = handleStateChange1;
   xmlHttp.open("GET", "http://weblinkchecker.forum-source.tk/crawler.php?link=" + links.replace('&','0123456789abcdef'), true);
   xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   xmlHttp.send("&type=anythinghere&anothervar=datahere");
   document.getElementById(id).innerHTML = "Successful !";
}  

function handleStateChange2() 
{ 
   if(xmlHttp2.readyState == 4 && xmlHttp2.status == 200 ) 
   {   
       var data;
       data = xmlHttp2.responseText;
       document.getElementById('container2').innerHTML = data;
   }
}

function sendForLinks()
{ 
   createXMLHttpRequest2();
   xmlHttp2.onreadystatechange = handleStateChange2;
   xmlHttp2.open("GET", "http://weblinkchecker.forum-source.tk/links.php?link=" + links.replace('&','0123456789abcdef'), true);
   xmlHttp2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   xmlHttp2.send("type=anythinghere&anothervar=datahere");
}

window.onload = function()
{ 
   loaded();
}

</script>

كما يمكنك أن ترى مدقق ارتباط الويب الخاص به ، هناك بعض css لم أقم بتحميله ، وأيضًا هناك الكثير من PHP باستخدام Ajax ولكن لا يوجد أي من هذا التأثير على الكود ، كما قمت بإزالة أي وظائف InnerHTML. آسف لوجود مثل هذه الرمز الكبير.

إذا كان بإمكان أي شخص أن يخبرني لماذا تقوم التخزين المحلي HTML5 بتوفيره ، فسيكون ذلك بمثابة مساعدة كبيرة. لقد حاولت صدى البيانات ويعطي البيانات القديمة وليس الحديث. أشعر أنني ضربت جدار من الطوب مع هذا الجدار.

هل كانت مفيدة؟

المحلول

أولاً ، من الصعب القراءة الكود الخاص بك ، يرجى العمل على نمط الترميز الخاص بك ، على سبيل المثال:

  1. استخدم أكثر من مساحة واحدة لكل مسافة بادئة
  2. لا تضع أشياء على نفس الخط مع فتحة وإغلاق الأقواس المجعد
  3. استخدم المساحات حولها ==, != إلخ.

هذا سيجعل الكود الخاص بك أكثر قابلية للقراءة :)

لكن على مشكلتك:

// this looks like a callback....
chrome.tabs.getSelected(null,function(tab) { 
    var temp;
    temp = tab.url;
    localStorage['tab'] = temp;
    console.log(temp);
});

// this will most likely get executed BEFORE the callback gets called
// therefore the values just hasn't been changed yet
links = localStorage['tab'];
rule = localStorage['ok0'];
search = links.indexOf(rule);

من المرجح أن تحتاج إلى تحريك بقية loaded تعمل في رد الاتصال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top