2010-12-30 41 views
1

Mozilla FirefoxでJavaScriptを使用してTinyMCEエディターで指定したテキストを選択しようとしています。だから本質的に私は下のテキストで 'Hello World'を選択したいですか?firefoxのtinymceエディターでテキストの範囲を選択する方法

<body class="mceContentBody " id="tinymce" dir="ltr"> <p>Hi there Hello World this is amazing<br_mce_bogus="1"></p></body> 

私は正常に(IEは、テキスト範囲のオブジェクトを使用しているため、範囲を移動することは簡単だった)IEでTinyMCEをエディタでテキストの範囲を選択するにはJavaScriptを書きました。私はまだmozillaで必要なテキストを選択する際に問題があります。コンテンツ全体を選択しますが、必要なコンテンツを選択する方法がわかりません。誰ですか?または誰も私に特定のテキストを選択するtinyMCE APIを使用する方法の例を与えることができますか?

startOffsetを使用
var range = document.createRange(); 
var start = document.getElementById('tinymce'); 
range.setStart(start, 0); 
range.setEnd(start, start.childNodes.length); 
window.getSelection().addRange(range); 

及び(setStartとSETENDに)それぞれ0と1以外のendOffsetの、JavaScriptはエラー

インデックスまたはサイズが

答えて

2
許容量よりも負以上であるスロー

これを行うためのTinyMCEのAPIがありますが、わかりませんので、DOM Rangeバージョンを提供します。あなたがしたいテキストを含むテキストノードのホールドを取得する必要があります:

var range = document.createRange(); 
var start = document.getElementById('tinymce'); 
var textNode = start.getElementsByTagName('p')[0].firstChild; 
range.setStart(textNode, 9); 
range.setEnd(textNode, 20); 
window.getSelection().addRange(range); 

IEのTextRangeとDOMのRangeは概念的には非常に異なっています:前者はDOMノードの境界のための非常に少ない点でテキストの内容にほぼ独占的に焦点を当てて後者はDOMノード(テキストノードと要素を含む)とその中のオフセットに完全に焦点を合わせます。

+1

Wow..Thats great ...うまくいきました...私はgetElementsByTagName( 'p')[0]でのみ試していたので、このトリックは 'getElementsByTagName(' p ')[0] .firstChild' ] ..ありがとうTim ..あなたは私の日を作った:)) – nilesh

関連する問題