2016-12-27 70 views
0

我正在嘗試爲我的第一個擴展名創建選項頁。我是編碼新手,所以我確信我已經做了一個簡單的假面。不幸的是,我遇到了一些基本功能方面的問題,這些基本功能在我的基本擴展中有一段時間沒有問題。我已經查看了語法並搜索了我能想到的所有地方,爲什麼這不起作用,並且沒有提供關於它爲什麼失敗的錯誤。我已經轉載了 jsfiddle中的行爲。任何援助將不勝感激。.click()按鈕無法處理(無錯誤)

--HTML--

<title>Options for My Extension</title> 

<script src="jquery-3.1.1.js"></script> 
<body> 
<h1>Toggle Menu to "Default = Out"?</h1> 
<select id="Menu_Hide"> 
<option value="No">No</option> 
<option value="Yes">Yes</option> 
</select> 
<br /> 
<button id="Save">Save</button> 
<br /> 
<button id="Reset">Reset</button> 
</body> 

--JS--

function save_data(){ 
    var ob = document.getElementById("Menu_Hide"); 
    var txt = ob.children[ob.selectIndex].value; 
    localStorage["Menu_Hide"] = txt; 
} 

function load_data(){ 
    console.log("This loads just fine!") 
    var data = localStorage["Menu_Hide"]; 
    if (!data){ 
     return; 
    } 
var select = document.getElementById("Menu_Hide"); 
var found = false; 
for (var i = 0; i < select.children.length && !found; i++){ 
    var child = select.children[i]; 
    if (child.value == data) { 
     child.selected = "true"; 
     found = true; 
    } 
}  
} 

window.onLoad = load_data(); 

$('#Save').click(function() { 
    alert('Settings Saved!'); 
    save_data(); 
}) 

--manifest.json--(更新)

{ 
    "manifest_version": 2, 
    "name": "My first attempt at being useful.", 
    "description": "This extension will add additional functionality to some pages.", 
    "version": "1.5", 
    "options_page": "options.html", 
    "content_scripts": [{ 
    "js": ["start.js"], 
    "matches": 
     [ 
     "https://<url1>" 
     "https://<url2>", 

     ] 
    }], 
"web_accessible_resources": ["run.js"], 
    "permissions": [ 
    "activeTab", 
    "tabs", 
] 
} 
+0

錯字:它是['selectedIndex'](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedIndex)而不是'selectIndex'。另外小提琴確實給錯誤,第一個是沒有定義jQuery,因爲你沒有爲小提琴正確包括它,然後錯誤'無法讀取'undefined'的屬性'值爲你使用錯誤屬性的行name –

+1

'window.onLoad = load_data();'應該是'window.onLoad = load_data;'。您正在立即調用該函數,而不是分配函數的參考 – charlietfl

+0

好的,因此在將上述建議固定到小提琴後,它確實可以在小提琴上工作。但是,在加載Chrome瀏覽器擴展程序時,完全相同的代碼將作爲「options_page」失敗。任何人都有任何洞察力,爲什麼這會失敗?沒有任何記錄到控制檯。我沒有看到爲什麼當點擊「保存」按鈕時,「save_data」函數不會觸發。 – technicallynick

回答

0

我無法找到任何支持文檔,但我發現「.click()」功能不適用於擴展中的「選項」頁面。但是,不是完全使用單獨的頁面,您可以使用瀏覽器操作「default_popup」並單擊功能(以及其他事件偵聽器)在此處工作。

我希望這可以幫助未來的人!