1

我尝试在 JavaScript 中备份一个 TextRange 对象以便稍后恢复它,因此我尝试将一个函数链接到模糊事件,但是当调用该函数时,我的选择已经丢失:/ 我如何在运行之前运行特定行为模糊事件?或者你有其他解决方案来做这个技巧吗?

我试过这个:

this._editableFrame._elt.onload= function(oEvent){
    oEvent.srcElement.contentDocument.body.onblur=function(oEvent) {
    this._sel=this.document.selection.createRange().duplicate(); } 
    /*alert(this._sel.text);*/
    return true; 
};

当我这样做时,我只有一个空的TextRange:/但是如果我在函数中写了一个“警报”,我成功地在模糊函数中获得了我的文本选择:/我如何捕获模糊事件以及我能做什么这种类型的操作?我是 javascript 的初学者。

非常感谢,我在这个问题上花了很多时间......:/

4

2 回答 2

1

我认为模糊事件并不完美,这可能会对您有所帮助

var selectedText = "";
function getSelectedText()
{
    if (typeof window.getSelection != "undefined") {
        selectedText = window.getSelection().toString();
    }
    else if (typeof document.selection != "undefined" && document.selection.type == "Text")
    {
        selectedText = document.selection.createRange().text;
    }
}

function show_selected_text()
{
     getSelectedText();
    if(selectedText) alert(selectedText);
}

document.onmouseup = show_selected_text;
document.onkeyup = show_selected_text;

演示。

于 2012-07-06T13:45:21.963 回答
1

由于您似乎只在谈论 IE,我建议您使用 IE-onlybeforedeactivate事件。该blur事件为时已晚,并且您的选择在它触发时已经消失。

this._editableFrame._elt.onload = function(oEvent){
    oEvent.srcElement.contentDocument.body.onbeforedeactivate=function(oEvent) {
        this._sel=this.document.selection.createRange().duplicate();
    };
};

这是我对类似问题的回答:

https://stackoverflow.com/a/5338889/96100

于 2012-07-06T20:32:13.400 回答