脚本适用于jsFiddle但不适用于Greasemonkey

时间:2012-03-06 02:02:20

标签: javascript jquery greasemonkey userscripts

我有这个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();
});

2 个答案:

答案 0 :(得分:1)

有几件事:

  1. 问题可能是安装冲突。来自jsFiddle的脚本名义上起到了GM脚本的作用。

    1. 来自&#34;管理用户脚本&#34;面板,卸载当前脚本和任何其他具有相同名称的脚本。
    2. 重新启动Firefox也是一个好主意。
    3. 将下面的代码保存到Capitalize_Inputs.user.js,然后将其安装为Greasemonkey脚本。 (调整includeexcludematch指令。)

  2. 您无需在此处或大多数GM脚本中使用$(document).ready()

  3. 如果可以,请避免使用@include *。它可以加快速度并减少潜在的冲突。

  4. capitalize()功能可能会更好。至少,替换:
    var split = this.value.split(' ');
    搭配:
    var split = this.value.split(/\s/); //或者拆分(/ \ s + /)取决于是否需要多个空格


  5. 生成的脚本如下:

    // ==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,它只是一个输入(没有库)来测试。

尝试卸载然后重新安装脚本。