2015-12-11 49 views
0

我做了一個chrome擴展,並且爲其添加了一個選項頁面。我有過這樣<input id="inpID">選項頁面上的輸入,並沒有調用外部JavaScript文件中像這樣<script type="text/javascript" src="whatever.js"></script>無法修改<input>標記的值

whatever.js是這樣的:

var inpID = document.getElementById('inpID'); 
... 
function getData(key){ 
    var tem = ''; 
    chrome.storage.local.get(key,function (msg){ 
     tem = JSON.stringify(msg).substr((key.length+5),JSON.stringify(msg).length-(key.length+7)); 
    }) 
    return tem; 
} 
function setData(key,value){ 
    chrome.storage.local.set({key: value},function(){}); 
} 
... 
inpID.addEventListener('keyup',saveID); 
... 
function saveID() { 
    setData('ID',inpID.value); 
} 
... 
inpID.value = getData('ID') 

然而,這段代碼並沒有在所有的工作。我在輸入,刷新頁面中輸入了一些東西,輸入仍然是空白的。任何幫助?

+0

刷新頁面將始終會重新加載初始頁面,除非您更改html文件的代碼 – yaochiqkl

+1

對dupe的評論:'chrome.storage.local.get'是異步的:您不能返回值,您必須使用回電話。 – Xan

+0

@Xan工作,謝謝 –

回答

0

使用Jquery。

$("#ID").attr("value",ID) 

爲例,這部作品在計算器現場:

$("#search input").attr("value","myValue") 

也許你的問題出在其他地方,因爲你的代碼應該工作,因爲它是。

作爲一個測試,你可能需要設置的inpID背景顏色和回聲getData('ID')安慰。

+0

不,但我真正想要的是自動保存用戶輸入存儲的內容。因此,當用戶重新打開頁面時,它會從存儲中提取數據並將其放回到輸入元素,以便保存用戶的數據(正如我所說的,這是一個選項頁面,我將不得不使用數據稍後彈出窗口)@wotanii –

+0

在輸入字段中輸入一些數據。然後在最後一行設置一個斷點。是否有'getData('ID')'的值,並且有'inpID.value'值嗎?如果你不能提供斷點,用戶提醒。 – wotanii