2017-08-24 88 views
0

我正在使用Google-Extention,它允許我打開一個包含表單的新選項卡。表格填寫完成並保存後,每次我再次打開此選項卡時,表格應該預先填入之前保存的數據使用javascript填充頁面加載數據的文本框

以下是如何保存數據:WORKS!

function saveCheckoutData() { 

    var vName = document.getElementById('txbx_name').value; 

    chrome.storage.sync.set({'name': vName}, function() { 
     console.log(vName); 
    }) 
} 

這裏是我得到的數據:WORKS!

function getdata() {  
     chrome.storage.sync.get('name', function(data) { 
      var name = data.name; 
      if(name != null){ 
       document.getElementById("txbx_name").value = name; 
      } 
     }); 
} 

上面的代碼被調用按鈕點擊完美的作品!

但是,只要我努力的標籤被打開時,要做到這一點它不起作用(標籤被打開,但沒有在文本框中沒有)不起作用!

function configAutofill(){ 

    var newURL = "autofill_data.html"; 
    chrome.tabs.create({ url: newURL }); 

    chrome.storage.sync.get('name', function(data) { 
     var name = data.name; 
     if(name != null){ 
      document.getElementById("txbx_name").value = name; 
     } 
    }); 
} 

是否有人有一個想法,爲什麼創建一個新的標籤時,這些線路不工作?

非常感謝提前。

+1

請編輯問題爲主題:包括一個[重複問題*]的[mcve]。對於Chrome擴展程序或Firefox Web擴展程序,幾乎總是需要包含* manifest.json *和一些背景,內容和/或彈出腳本/ HTML以及常用的網頁HTML /腳本。尋求調試幫助的問題(「爲什麼我的代碼不按我想要的方式工作?」)必須包括:(1)期望的行爲,(2)特定問題或錯誤,以及(3)重現它所需的最短代碼*在問題本身*。請參閱:[我可以在這裏詢問什麼主題?](/ help/on-topic)和[問]。 – Makyen

回答

1

這是一個問題給你。

創建新選項卡後,您訪問document.getElementById。是的,但哪個文件

在你的情況下,這將是頁面調用create - 這是而不是創建的頁面

就你而言,你似乎打開了一個擴展部分的頁面。那麼你應該在其中包含代碼,它將在加載時運行。

您可能要檢查document.readyState

if (document.readyState === "loading") { 
    document.addEventListener('DOMContentLoaded', getdata); 
} else { 
    getdata(); 
} 

如果你想有一個網頁要做到這一點,你需要一個內容腳本。同樣,這些通常在DOM解析後執行 - 所以只需在頂層調用getdata()

相關問題