2012-03-06 18 views
0

Fiddleでうまく動作するGreasemonkeyスクリプトがあります。これは、入力フィールドに入力されたテキストを大文字にするように設計されています。残念ながら、Greasemonkeyに実装しようとすると、動作を拒否します。スクリプトはjsFiddleで動作しますが、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(); 
}); 

答えて

1

いくつかのこと:。

  1. 問題はおそらくインストールの競合です。そのjsFiddleのスクリプトは、名目上GMスクリプトとして動作します。

    1. [ユーザースクリプトの管理]パネルで、現在のスクリプトと同じ名前のスクリプトをアンインストールします。
    2. Firefoxを再起動することも良い考えです。
    3. 以下のコードをCapitalize_Inputs.user.jsに保存し、Greasemonkeyスクリプトとしてインストールします。 (includeexclude、およびmatchディレクティブを調整します。)

  2. あなたはここか、ほとんどのGMスクリプトで$(document).ready()を使用する必要はありません。

  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

2と3が有効です。 4は合理的ですが、文字列を変更します(それを大文字にする以外に)。しかし、潜在的に問題に関連するのは1.1だけです。名前を変更したり、Firefoxを再起動する必要はありません。 Firefoxの実行中に、インストールされたスクリプトをインストール、アンインストール、変更することも可能です。 –

+0

@MatthewFlaschen:名前を変更する必要はありませんが、FFを再起動する必要があります。名前の変更は、インストールの競合に対処するときに新しいユーザーを助けることが証明された単なる技法です。再起動は、GMスクリプトのライブ編集やデバッグを頻繁に行う際に発生する追加の競合や不安定な動作を解決するのに役立ちます。 GMスクリプトのデバッグ時にFFがメモリ使用量を加速させ、FFが遅くなることに気付くでしょう。両方の再起動の良い理由。 –

+0

ありがとう! 7つ以上行く... – henryaaron

0

私の作品のFirefox 10.0.2、Greasemonkeyの0.9.18私はちょうど入力(無ライブラリ)であるthis fiddleを、使用している、と。。 。テスト

、スクリプトを再インストールアンインストールしてみ

+0

これはコメントであり、回答ではありません。 (まだフラグを立てていない) –

+0

@BrockAdams、私の答えは、スクリプトに何も問題はないということです。私が実際にテストしていなければ、コメントとして投稿したでしょう。私は再インストールに関する注意を追加しました。私は、OPが彼らが再検査したことを示すなら、フォローアップもうれしい。 –

関連する問題