2010-03-05 30 views
2

的「selectionStart」適用於Internet Explorer,我有當前的代碼可以在iframe中選擇desingMode設置爲on的範圍: 如何在iframe中選擇範圍使用Firefox中的「開始」和「結束」,如來自輸入元素

 
    var Range = window.document.selection.createRange(); 
    var obj = { start: 3, end : 6} 
    Range.collapse(true); 
    Range.moveStart('character', obj.start); 
    Range.moveEnd('character', obj.end - obj.start); 
    Range.select();

最有用的,如果我想通過只有2個參數只選擇一個字符串的一塊。開始和結束(對於輸入元素,存在屬性selectionStart和selectionEnd)。

當這個代碼被執行時,例如在一個字符串「Hello World」上,它只會突出顯示字符串llo Wo或類似的東西。
問題是Firefox Dom不支持moveStart或moveEnd方法,但只支持range.setStart和range.setEnd,它只請求一個節點和一個偏移量作爲參數。

所以可以虛擬化Firefox中的moveStart和moveEnd方法嗎? 謝謝。

回答

1

這個工作對我來說:

var iframeElement = ...; // the DOM element for the iframe; 

var contentDoc = iframeElement.contentDocument; 
var range = contentDoc.createRange(); 
range.setStart(contentDoc.body.firstChild, 3); 
range.setEnd(contentDoc.body.firstChild, 6); 
var selection = iframeElement.contentWindow.getSelection(); 
selection.removeAllRanges(); 
selection.addRange(range); 

你需要調用removeAllRanges()在Firefox或者其他可使用多重選擇結束。

相關問題