Facebookがどのように機能するかを調べようとしています。私は彼らがコメントやステータス機能でテキストエリアを使用していることを知っていますが、投稿などに誰かをタグ付けすると、明るい青色の背景を持つテキストエリアのテキストの選択が強調表示されます。私はtextareaのことを知っているか、最後に私は少なくともこの種の要素では不可能だったことを知っていたので、どうやってそれをやっているのですか?どのようなテクニックですか?誰もが考えている?どのように行われているかについては、いくつかの煙や鏡の上で銀行取引をしていますが、jQueryまたはJavaScriptテキストエリアで選択したテキストを強調表示する方法
答えて
何らかの形でtextarea
を使用していますが、大部分の魔法はdiv
とCSSで行われます。私は、Safariのウェブインスペクタからこれを引っ張っ:
<div class="inputContainer">
<div class="uiMentionsInput" id="up84fa_5">
<div class="highlighter" style="direction: ltr; text-align: left; ">
<div style="width: 499px; ">
<span class="highlighterContent"><b>Brandan Lennox</b> is the coolest.</span>
</div>
</div>
<div class="uiTypeahead composerTypeahead mentionsTypeahead" id="up84fa_9" style="height: auto; ">
<div class="wrap">
<input type="hidden" autocomplete="off" class="hiddenInput">
<div class="innerWrap">
<textarea class="uiTextareaAutogrow input mentionsTextarea textInput" title="What's on your mind?" name="xhpc_message_text" placeholder="What's on your mind?" onfocus="return wait_for_load(this, event, function() {if (!this._has_control) { new TextAreaControl(this).setAutogrow(true); this._has_control = true; } return wait_for_load(this, event, function() {JSCC.get('j4f3584ff4f90d07867222385').init(JSCC.get('j4f3584ff4f90d07867222386'));;JSCC.get('j4f3584ff4f90d07867222386').init(["buildBestAvailableNames","hoistFriends"]);JSCC.get('j4f3584ff4f90d07867222383').init({"max":10}, null, JSCC.get('j4f3584ff4f90d07867222385'));;;});});" autocomplete="off" style="height: 48px; direction: ltr; ">What's on your mind?</textarea>
</div>
</div>
</div>
<input type="hidden" autocomplete="off" class="mentionsHidden" name="xhpc_message" value="@[815490222:Brandan Lennox] is the coolest.">
</div>
<div class="attachmentMetaArea"></div>
</div>
重要な要素:
- とその子孫
span.highlighterContent
を。強調表示されたコンテンツとしてb
要素をスタイルすることに注意してください。 textarea
要素の乱雑なonfocus
ハンドラです。その中のどこかに、textarea
コンテンツ自体が更新されていないため、TextAreaControl
オブジェクトが作成されます。これはDOM内の別の場所にオブジェクトを作成するようです。input[type=hidden].mentionsHidden
は、カスタムデータをサーバーに送信して、実際にあなたが誰と言及したのかを認識します。
div.highlighter
これは完全にFacebook固有のものですが、多分それはあなたに何をしたいかについてのいくつかのアイデアを提供します。
古典的なテキストエリアを使用していません。私はそれが狂った音だと知っていますが、あなたが入力すると、キーワードを強調表示したり入力を移動したりすることができるhtmlが生成されます。あなたはFirebugでリアルタイムでどうなるかを見るために見ることができます。
Firebugはテキストエリアを表示しますが、おそらくそれは魔法のように生成されたHTMLの事の裏に隠されていますか?確かにクレイジー。 – Domenic
さて、これは私の質問の基礎です、twitter、linkedin、facebook、これと同じような機能を持つ他の同様のエンティティでファイアーバグを探して、古典的なtextareaタグを見ています。しかし、あなたの演出を聞いた後、それはいくつかの意味があります、あなたはそれに焦点を当ててdivを推測するImは、この隠されたテキストエリアに焦点を当てて、textareaはキーイベントを使ってdivのhtmlに入力するものを反映します.. @記号などの他のものをトリガする – chris
私はこれを行うためのhtml5デモに基づいて例を取り上げました。それを確認してくださいhttp://jsfiddle.net/KStst/これはセクションを編集可能にするようブラウザに指示するだけで、基本的なhtml機能を理解しています。これはおそらくFacebookがそれをやっている方法ではありませんが、html5が "未来"であるとすればそれはおそらく遊ぶ価値があります。
- 1. JS/jQuery:テキストエリア内のテキストを強調表示または選択する方法は?
- 2. 選択したテキストをWebviewで強調表示します。 [Android]
- 3. MvxListViewで選択したアイテムを強調表示する方法
- 4. Javascript/jQuery:番号を増やして選択したときにテキストを強調表示する方法
- 5. Xamarin.Mac - PDFファイルで選択したテキストを強調表示する方法
- 6. jqueryで選択したグリッド行を強調表示
- 7. テキストでテキスト選択したテキストをテキストエリアに表示
- 8. jquery treeview選択した項目を強調表示
- 9. * ngForで選択した行を強調表示する方法は?
- 10. プリファレンスヘッダーで選択したヘッダーを強調表示します
- 11. PDF内のテキスト行を選択して強調表示する方法は? (iOS)
- 12. Recyclerビューで選択した項目を強調表示する方法
- 13. RecyclerViewで選択した項目を強調表示する方法
- 14. 角度4で選択したメニューを強調表示する方法
- 15. CSS - 選択したタブを強調表示します
- 16. NSImageViewl強調表示/選択
- 17. rstudioデータフレームビュー()の選択行を強調表示する方法は?
- 18. 選択した行を強調表示する
- 19. ListView、選択したアイテムを強調表示する
- 20. 選択したコンポーネントを強調表示するVueJS
- 21. UIPickerViewで強調表示された選択をオーバーライドする
- 22. 選択を強調表示するためにUIViewをマスクする方法?
- 23. mousemoveのjavaスクリプトのテキストを選択または強調する方法
- 24. XamarinフォームUWPで選択したタブを強調表示
- 25. Angular2とRxJsで選択したアイテムを強調表示
- 26. VSコード - ミニマップで選択した単語を強調表示
- 27. オープニングディビジョンをクリックまたは選択したときにeditplusでクローズドdivを強調表示する方法
- 28. テキスト選択が強調表示されています
- 29. ドロップダウンリストで選択したテキストを表示する方法は?
- 30. 選択時にグリッド表示項目を強調表示する方法は?
おそらくcontenteditableを使用しています(http://html5demos.com/contenteditableを参照)。これにより、テキストの一部の背景を変更することができます – dstarh
@dstarh興味深いのは、実際にはそうでないということです。 – Domenic
正直、私は@ mazzucciの答えを見ました。私はまだcontenteditableを使うと同じ効果が得られると思います。 – dstarh