我有这个Greasemonkey脚本在小提琴中运行良好。它旨在大写输入字段中输入的文本。不幸的是,当我尝试将其实现为Greasemonkey时,它拒绝工作。
任何人都可以帮助我吗?我是Greasemonkey的新手。
脚本(它也在this jsFiddle):
// ==UserScript==
// @name 2
// @include *
// @require http://code.jquery.com/jquery-1.7.1.min.js
// ==/UserScript==
$(document).ready(function(){
$.fn.capitalize = function () {
$.each(this, function () {
var split = this.value.split(' ');
for (var i = 0, len = split.length; i < len; i++) {
split[i] = split[i].charAt(0).toUpperCase() + split[i].slice(1).toLowerCase();
}
this.value = split.join(' ');
});
return this;
};
$('input').on('keyup', function () {
$(this).capitalize();
}).capitalize();
});
答案 0 :(得分:1)
有几件事:
问题可能是安装冲突。来自jsFiddle的脚本名义上起到了GM脚本的作用。
Capitalize_Inputs.user.js
,然后将其安装为Greasemonkey脚本。 (调整include
,exclude
和match
指令。)您无需在此处或大多数GM脚本中使用$(document).ready()
。
如果可以,请避免使用@include *
。它可以加快速度并减少潜在的冲突。
capitalize()
功能可能会更好。至少,替换:
var split = this.value.split(' ');
搭配:
var split = this.value.split(/\s/);
//或者拆分(/ \ s + /)取决于是否需要多个空格
生成的脚本如下:
// ==UserScript==
// @name _Capitalize inputs
// @include http://YOUR_SITE/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==
$.fn.capitalize = function () {
$.each(this, function () {
var split = this.value.split (/\s+/);
for (var i = 0, len = split.length; i < len; i++) {
split[i] = split[i].charAt(0).toUpperCase() + split[i].slice(1).toLowerCase();
}
this.value = split.join (' ');
} );
return this;
};
$('input').on ('keyup', function () {
$(this).capitalize ();
} ).capitalize();
答案 1 :(得分:0)
适合我。 Firefox 10.0.2,Greasemonkey 0.9.18。我正在使用this fiddle,它只是一个输入(没有库)来测试。
尝试卸载然后重新安装脚本。