ペーストしたテキストから指定キーワードを削除するスクリプトを作りたいのですが。
トラビアンの戦闘ログを以下サイトで管理しています。
http://travian-reports.net/jp/
ゲームのページから以下のログをコピーし、
件名: aaがbbを攻撃しました
送信: 日付: 今日 時間: 05:28:15 時
攻撃者 AA 所有の村から来た aa
ファランクス ソードマン パスファインダー シューテイタス・サンダー ドルイドライダー ヘジュアン ラム トレブシェ 首領 開拓者
兵士 0 450 0 0 0 0 0 16 0 0
死傷 0 0 0 0 0 0 0 0 0 0
情報 トレブシェ 農耕地は破壊されました。
略奪資源
木0 | 粘土0 | 鉄0 | 穀物00
運搬0/20250
*文字数の問題で省略
これをペーストしても上記サイトでうまく解析してくれません。
「所有の村から来た」を「所有の」に変更するとうまくいきます。
というわけで、エディットボックスにペーストしたとき、
「村から来た」を削除するGreasemonkeyスクリプトを作りたいのです。
スクリプトのサンプル、もしくはそのものを作ってもらえませんでしょうか。
どうでしょうか。
var textarea = document.querySelector("#mainleft textarea"); if(!textarea) return; textarea.addEventListener("keyup", editText, false); textarea.addEventListener("mouseup", editText, false); textarea.addEventListener("change", editText, false); function editText(){ this.value = this.value.replace(/所有の村から来た/g,"所有の"); }
どうでしょうか。
var textarea = document.querySelector("#mainleft textarea"); if(!textarea) return; textarea.addEventListener("keyup", editText, false); textarea.addEventListener("mouseup", editText, false); textarea.addEventListener("change", editText, false); function editText(){ this.value = this.value.replace(/所有の村から来た/g,"所有の"); }
回答をオープンするのが遅くなってしまい、申し訳ありませんでした。
インストールして試してみましたが、まだうまく動かせていません。
インストールの注意点など、なにかご存じのことがあれば教えていただけると嬉しいです。
"#mainleft textarea"という部分がありますが、これは#付きはidを、#なしはhtmlのタグを表しているのでしょうか?
また、スペースで区切ることにより、子要素を階層的に指定できるのでしょうか?
例えば指定ページのhtmlだと、
"#maincont #mainleft textarea"と記述しても同様の結果が得られると言うことでしょうか?
また、replace(/所有の村から来た/g,"所有の");ですが、カンマの前がダブルクォーテーションではなくスラッシュで、
最後にgがついていますが、これは全ての「所有の村から来た」を置換することを指定しているのでしょうか?
以上、また質問となってしまいましたが、よろしくお願いします。
こちらはどういう意味でしょうか?
このページ内に、なにか適切な説明が書いてあるのでしょうか?ちょっと見つけられていませんが。
今回の質問は、問題を解決したいだけでなく、GreaseMonkeyのスクリプトを勉強する目的もありました。
説明が不十分で申し訳ありません。
回答をオープンするのが遅くなってしまい、申し訳ありませんでした。
インストールして試してみましたが、まだうまく動かせていません。
インストールの注意点など、なにかご存じのことがあれば教えていただけると嬉しいです。
"#mainleft textarea"という部分がありますが、これは#付きはidを、#なしはhtmlのタグを表しているのでしょうか?
また、スペースで区切ることにより、子要素を階層的に指定できるのでしょうか?
例えば指定ページのhtmlだと、
"#maincont #mainleft textarea"と記述しても同様の結果が得られると言うことでしょうか?
また、replace(/所有の村から来た/g,"所有の");ですが、カンマの前がダブルクォーテーションではなくスラッシュで、
最後にgがついていますが、これは全ての「所有の村から来た」を置換することを指定しているのでしょうか?
以上、また質問となってしまいましたが、よろしくお願いします。