我正在尝试使用Tampermonkey运行此脚本,但出现错误:
eslint:no-undef-$
未定义”
我在做什么错了?
脚本:
(function() {
'use strict';
restore();
$('span.tag').each((n, span) => {
let input = document.querySelector(`input#${span.getAttribute('for')}`);
span.addEventListener('click', () => {
store(`tags`, input.value, input.checked);
});
});
$('#board, #title').change((e) => {
store(e.target.id, e.target.value);
});
function restore(){
let json = localStorage.getItem('create') || "{}";
let data = JSON.parse(json);
Object.keys(data).forEach(key => {
switch(key){
case "tags":
data[key].forEach(val => {
document.querySelector(`input[value="${val}"]`).setAttribute('checked', 'checked');
document.querySelector(`span[for="create_${val}"]`).classList.add('selected');
});
break;
case "board":
document.querySelector(`#board option[value="${data[key]}"]`).setAttribute('selected', 'selected');
default:
document.querySelector(`#${key}`).value = data[key];
break;
}
});
}
function store(key, value, checked) {
let json = localStorage.getItem('create') || "{}";
let data = JSON.parse(json);
if(arguments.length === 3){
data[key] = new Set(data[key]);
if(checked) {
data[key].add(value);
} else {
data[key].delete(value);
}
data[key] = Array.from(data[key]);
} else {
data[key] = value;
}
json = JSON.stringify(data);
localStorage.setItem('create', json);
}
})();
答案 0 :(得分:1)
您需要先定义全局变量。只需在顶部添加以下行:
/* globals jQuery, $, waitForKeyElements */
也不要忘记在==UserScript==
行之间使用jquery:
// @require http://code.jquery.com/jquery-3.x-git.min.js
答案 1 :(得分:0)
实际上这是一个匿名函数,在某些情况下,您可能必须传递jQuery
尝试类似:
(function($) {
'use strict';
$('body').css('background', 'red');
})(jQuery);
不过,您需要在运行此脚本的页面中包含一些jquery CDN或您想在哪里使用它。