Javascript 脚本在JSFIDLE中工作,但在Greasemonkey中不工作
我有一个油腻的剧本,在小提琴上很好用。它的设计目的是将输入字段中输入的文本大写。不幸的是,当我试图将它实现到Greasemonkey中时,它拒绝工作 有人能帮我吗?我刚到Greasemonkey 脚本(也位于:Javascript 脚本在JSFIDLE中工作,但在Greasemonkey中不工作,javascript,jquery,greasemonkey,userscripts,Javascript,Jquery,Greasemonkey,Userscripts,我有一个油腻的剧本,在小提琴上很好用。它的设计目的是将输入字段中输入的文本大写。不幸的是,当我试图将它实现到Greasemonkey中时,它拒绝工作 有人能帮我吗?我刚到Greasemonkey 脚本(也位于: /==UserScript== //@name 2 //@包括* //@需要http://code.jquery.com/jquery-1.7.1.min.js //==/UserScript== $(文档).ready(函数(){ $.fn.capitalize=函数(){ $。每个(
/==UserScript==
//@name 2
//@包括*
//@需要http://code.jquery.com/jquery-1.7.1.min.js
//==/UserScript==
$(文档).ready(函数(){
$.fn.capitalize=函数(){
$。每个(此,函数(){
var split=此.value.split(“”);
对于(变量i=0,len=split.length;i
适合我。Firefox 10.0.2,Greasemonkey 0.9.18。我正在使用,它只是一个输入(没有库)来测试
尝试卸载然后重新安装脚本。几件事:
大写_Inputs.user.js
,然后将其作为Greasemonkey脚本安装。(调整包含
、排除
和匹配
指令)。$(document).ready()
@include*
。这样可以加快速度,减少潜在冲突capitalize()
函数可能更好。至少,替换:var split=this.value.split(“”);
与:
var split=this.value.split(//\s/);
//或split(//\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();
/==UserScript==
//@name\u大写输入
//@包括http://YOUR_SITE/YOUR_PATH/*
//@需要http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
//==/UserScript==
$.fn.capitalize=函数(){
$。每个(此,函数(){
var split=this.value.split(/\s+/);
对于(变量i=0,len=split.length;i
这是一条评论,不是答案。(尚未标记。)@BrockAdams,我的回答是脚本没有问题。如果我没有实际测试,我会将其作为评论发布。我已经添加了关于重新安装的说明。如果OP表明他们已经重新测试,我也很高兴跟进。2和3是有效的。4是合理的,但它会更改字符串(除了大写)。但是,只有1.1可能与此问题有关。不需要更改名称或重新启动Firefox。在Firefox运行时,可以安装、卸载甚至更改已安装的脚本。@MatthewFlaschen:不,严格来说不需要更改名称,但很可能需要重新启动FF。名称为change只是一种被证明可以帮助新用户处理安装冲突的技术。重新启动有助于解决在对GM脚本进行大量实时编辑和调试时出现的其他冲突和不稳定行为。您还会注意到FF在调试GM脚本时会加速内存使用,并且FF变慢了。这两个都是重新启动的好理由。@MatthewFlaschen,你关于更改字符串的观点是正确的。我怀疑这是否是一个问题,但它很容易解决。编辑了答案。更重要的是,当单词前面有普通空格以外的任何内容时,旧代码完全不起作用。制表符、返回、不间断空格、unicode空格等都会导致它失败。
// ==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();