2012-04-28 11 views
3

javascriptを使用して単語が強調表示された完全な文章を生成しようとしています。選択した単語の前後にある単語をスキャンするJavascript

window.getSelection 

ハイライトされた単語を私に教えてください。私はjavascriptの範囲の例を探していますが、句読点が見つかるまで選択を後ろに移動し、句読点が見つかるまで転送する方法を完全に理解していません。

例:

ソーシャルメディアはノイローゼに満ち関係を持っています。 Obsessive 人々はのようなサイトには不可欠です。とTwitter。彼らは エネルギーとバズを追加します。彼らのアイデンティティはアバターと結びついており、 それ自体がサイトを重要視しているようです。彼らは の多くを提供しています。去年の秋に発表された調査によると、Twitterのユーザーのうち2万2000人が読んでいる情報の半分を提供しているという。しかし、強迫観念は でも危険です。彼らはサイトを不気味に見せることができます。

上記の「Facebook」という単語を選択した場合、最終的な文字列は「強迫観念はFacebookやTwitterなどのサイトにとって不可欠です。


アップデート1:

作品の下に言及したコードが、HTMLタグがある場合は停止します。

例:あなたが商務省の報告書を詳細に調べる場合

、あなたがいくつかの一層残念な の番号を見つけることができます。棚卸資産の生産を脇に置く 企業は の後に—を売却することを予期して在庫を加算している。—経済は四半期にわずか1.6%増加した。 回復の現時点で急増するはずの設備投資は、ほとんど上昇しませんでした。個人的な使い捨て収入— — の金額の人々は、税金を支払った後に過ごす必要があります わずか0.4%。上記の「検索」を選択して

、出力文は

「あなたが商務省の報告書を詳細に調べる場合は、あなたには、いくつかのさらに多くの失望の番号を見つけることができます」の代わりに「あなたには、いくつかのさらに多くの失望の番号を見つけることができる」です

前後のタグを削除するにはどうすればよいですか?

答えて

2

window.getSelectionSelectionオブジェクトを返します。このオブジェクトからRangeを取得できます。Rangeは、開始オフセットと終了オフセットを提供します。残りは明白です:

rng = window.getSelection().getRangeAt(0) 
start = rng.startOffset 
end = rng.endOffset 
text = rng.startContainer.nodeValue 

before = text.substr(0, start) 
sel = text.substr(start, end - start) 
after = text.substr(end) 

sentence = before.match(/[^.!?]*$/)[0] + sel + after.match(/^[^.!?]*/)[0] 

これはFFで動作し、Chrome、IIRCではMSIEとは異なります。詳細はhttp://msdn.microsoft.com/en-us/library/ie/ms535869%28v=vs.85%29.aspxを参照してください。

+0

ありがとうございました!テストされ、魅力的に働いた! – BlockReader

+0

あなたは私の質問でアップデートを見ていただけますか? – BlockReader

関連する問題