iframe change selection

问题描述:

我创建了一个非常简单的rte,这里是我的问题,我可以在iframe中获取所选文本(designmode = true),但是我无法更改它。iframe change selection

HTML

<a onclick="change();">change</a> 
<iframe id="textEditor"></iframe> 

脚本文件

function $(Str1){return document.getElementById(Str1);} 
rte() 
{ 
    var texteditor=$('texteditor'); 
    textEditor.document.designMode="on"; 
    textEditor.document.body.contentEditable="True"; 
    textEditor.document.open(); 
    textEditor.document.close(); 
    textEditor.focus(); 

} 
function change() 
{ 
    var userSelection,range; 
    if (window.frames['textEditor'].getSelection) 
    { 
     userSelection=window.frames['textEditor'].getSelection(); 
    } 
    else if(document.frames['textEditor'].selection) 
    { 
     userSelection=document.frames['textEditor'].selection.createRange(); 
    } 
    if(userSelection.getRangeAt) 
    { 
     range=userSelection.getRangeAt(0); 
    } 
    else 
    { 
     range=document.frames['textEditor'].createRange(); 
     range.setStart(userSelection.anchorNode,userSelection.anchorOffset); 
     range.setEnd(userSelection.focusNode,userSelection.focusOffset); 
    } 
    range="<div style='color:#f00;'>" + range + "</div>"; 
} 
window.onload = rte(); 

难道说的rte()函数引用 '文本编辑' 的第一线,而不是 '文本编辑'?

+0

你是对的,但是当我设置他们都相同的脚本给出了一个错误 – 2012-08-13 06:10:55

我找到了一种方法来解决它了,变函数应该是这样的

function change() 
    if(document.selection) 
    { 
     sText=textEditor.document.selection.createRange(); 
     sText.execCommand("createlink","",""); 
     temp=sText.parentElement().innerHTML; 
     newNode=textEditor.document.createElement("h1"); 
     replacement=sText.parentElement().replaceNode(newNode); 
     newNode.innerHTML=temp; 
    } 
    else if(document.getSelection) 
    { 
     sText=textEditor.window.getSelection(); 
     myTag=textEditor.document.createElement("div"); 
     myTag.setAttribute("class","bold"); 
     sText.getRangeAt(0).surroundContents(myTag); 
    } 
}