Скрипт работает в jsFiddle, но не в Greasemonkey - PullRequest
0 голосов
/ 06 марта 2012

У меня есть скрипт Greasemonkey, который отлично работает в скрипке. Он предназначен для заглавных букв текста, введенного в поле ввода. К сожалению, когда я пытаюсь внедрить его в Greasemonkey, он отказывается работать.

Кто-нибудь может мне помочь? Я новичок в Greasemonkey.

Сценарий (это также на это 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 ]

1 голос
/ 06 марта 2012

Несколько вещей:

  1. Возможно, проблема в конфликте установки. Скрипт из этого jsFiddle номинально работает как скрипт GM.

    1. На панели «Управление пользовательскими сценариями» удалите текущий сценарий и все остальные с таким же именем.
    2. Перезапуск Firefox также будет хорошей идеей.
    3. Сохраните приведенный ниже код в Capitalize_Inputs.user.js и затем установите его как скрипт Greasemonkey. (Настройте директивы include, exclude и match.)

  2. Вам не нужно использовать $(document).ready() здесь или в большинстве сценариев GM.

  3. Избегайте использования @include *, если можете. Это ускоряет процесс и уменьшает потенциальные конфликты.

  4. Эта функция 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();
0 голосов
/ 06 марта 2012

У меня работает. Firefox 10.0.2, Greasemonkey 0.9.18. Для проверки я использую эту скрипку , которая является просто входом (без библиотеки).

Попробуйте удалить и переустановить скрипт.

...