在chrome中,我的用户脚本会导致错误
ReferenceError: jQuery is not defined
但是@require包含了jquery。至少我知道它与greasemonkey有关(铬不支持吗?)
如果我删除了一个函数调用的函数(这使得$ = jQuery)我得到错误$未定义。在firefox / greasemonkey中运行良好
// ==UserScript==
// @name Detect Duplicate IDs
// @namespace jkbfvsdjkzsvfshefsdvh
// @description Alerts you when more than one ID is on a page
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @include *
// @version 1
// @grant
// ==/UserScript==
//using localhost in @include doesn't seem to work
if(location.hostname!='localhost')
return;
//Ignore above for console.
(function($){
$(function() {
var checkDupeIDs = function () {
var dupes = [];
var ids = [];
$('[id]').each(function(i,e){ids.push(e.id)});
var len = ids.length;
for(i=0; i<len; ++i) {
if(dupes.indexOf(ids[i])!=-1)
continue;
for(n=i+1; n<len; ++n) {
if (ids[n]==ids[i]) {
dupes.push(ids[n]);
break;
}
}
}
if (dupes.length!=0) {
for(i=0; i<dupes.length; ++i)
console.warn('Multiple IDs #' + dupes[i]);
alert(dupes.join('\n'));
}
}
var jHtml = $.html;
$.html = function () {
checkDupeIDs();
return jHtml.call(this, arguments);
}
checkDupeIDs();
})
})(jQuery);
答案 0 :(得分:2)
直接开箱即用,Chrome不支持Greasemonkey脚本(Out-of-date table,Out-of-date page)。例如,@require
指令不起作用。
要享受Firefox Greasemonkey脚本的几乎完全兼容性,请安装the Tampermonkey Extension for Chrome。你的脚本应该在Tampermonkey中工作。
另外,为了避免Firefox中出现问题,请不要将@grant
留空。如果没有别的话,请使用@grant GM_addStyle
。
答案 1 :(得分:0)
检查两件最重要的事情: