GitHubGistにGreasemonkeyスクリプトをペーストする時に、自動でファイル名を入力してくれるGreasemonkeyを書きました。入力されるファイル名は@nameの要素+.user.jsとなるので、コードをペーストするだけでRawからインストールできるようになります。automatically.user.jsというファイル名が勝手に入力されます。file...で追加したテキストエリアにも対応させてあります。編集ページで動作します。この瞬間はまだtargetのvalueが空である。最初から表示されているテキストエリアにイベントをつけるaddAutoEvent(1);[Griever][5]さんが書いてくれた[ヒント][6]を元にしてます。...);でペーストに対してイベントリスナーを付け加えることができるのですが、この瞬間にe.target.valueとしても内容は空(もしくは元からそこに書いてあったもの)となり、期待するテキストエリアの文字列は取得できません。この瞬間はまだtargetのvalueが空である。function(evt){...のように、inputイベントをつけると、実際に文字列がテキストエリアに入った瞬間にinputイベントが動くので、inputイベント内でobj.valueを見るととテキストエリア内の文字列が取得できます。GitHubを参考に)後は、inputのイベントはそのまま残っているとジャマなので自身を参照してremoveEventListenerしておいて、やりたかったことをやる。追加されたテキストエリアにもイベントを加えるのもほとんど同じ形をしています。addボタンに対してclickイベント付け加えます。gistでは元々addボタンに対してclickイベントがつけられていて、複数のclickイベントがあったときはつけられた順に実行されるので、元々あったclickイベント→Greasemonkeyでつけたclickイベントの順に実行される。いうことをやりたい場合にテキストエリアが追加されるまで待たないといけません。今回はDOMNodeInsertedを使ってDOMに要素が追加されたら発火するイベントをつけることにした。要素内に新しいテキストエリアが追加されると、DOMNodeInsertedイベントが発火するので、非同期で追加されたテキストエリアに関しても、最初に作成したpasteイベントをつけることができる。この時に前と同様にDOMNodeInserted内で自分自身をremoveEventListenerしておく。DOMNodeInsertedとかドキュメントがあんまり見当たらない。http://javascript.g.hatena.ne.jp/edvakf/20100204/1265312155偶然にもpaste→input、click→DOMNodeInsertedという感じで両方とも、イベントリスナー内でaddEventListenerという形になった。タグ:GitGreasemonkeyお知らせ欄JavaScriptに関する最新情報は週一でJSer.infoを更新しています。efcl/efcl.github.ioからご意見下さい関連記事コメントを。