2016-12-27 71 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”并单击功能(以及其他事件侦听器)在此处工作。

我希望这可以帮助未来的人!