Я пытаюсь создать страницу параметров для моего самого первого расширения. Я совершенно новый для кодирования, поэтому я уверен, что сделал простой faux-pas. К сожалению, у меня возникли проблемы с некоторыми базовыми функциями, которые я работал в моем базовом расширении в течение некоторого времени и без проблем. Я рассмотрел синтаксис и искал всюду, о чем я могу думать, почему это не работает И не дает ошибки в том, почему он терпит неудачу. Я воспроизвел поведение в 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",
]
}
Typo: это ['selectedIndex'] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedIndex), а не' selectIndex'. Кроме того, скрипка дает ошибки, первая из которых - это jQuery, которая не определяется, так как вы не указали ее правильно для скрипта, а затем ошибку 'Can not read property 'значение undefined для строки, в которой вы использовали неправильное свойство name –
'window.onLoad = load_data();' должно быть 'window.onLoad = load_data;'. Вы вызываете функцию немедленно, вместо того, чтобы назначать ссылку на функцию – charlietfl
Итак, после того, как вы установили скрипку с приведенными выше рекомендациями, она фактически работает на скрипке. Однако при загрузке этот точный код в расширении Chrome выходит из строя как «options_page». Кто-нибудь имеет представление о том, почему это провалится? В консоли ничего не записывается. Ничего не могу понять, почему функция save_data не срабатывает при нажатии кнопки «Сохранить». – technicallynick