2012-07-06 41 views
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的初學者。

非常感謝,我花了很多時間在這個問題...:/

+0

你能告訴我們你嘗試過什麼?順便說一句,你可以隨時更新一些'與實際選擇global'變量,所以你將需要捕捉模糊事件 – antyrat 2012-07-06 13:26:05

+0

我已經試過這樣: 'this._editableFrame._elt.onload =功能(oEvent){ \t oEvent.srcElement。 contentDocument.body.onblur = function(oEvent){ \t \t this._sel = this.document.selection.createRange()。duplicate(); \t} /* alert(this._sel.text); */ \t return true; };' 當我這樣做時,我只是有一個空的TextRange:/但如果我在函數中寫入「alert」,我會成功在blur函數中獲取我的文本選擇:/如何捕獲模糊事件我能用這種類型的操作做什麼?我是一個JavaScript的初學者。 – BlackMario 2012-07-06 13:52:09

+0

請編輯您的問題以包含您的代碼;不要將它作爲評論發佈,因爲它更難讀,不太可能被看到。 – jackwanders 2012-07-06 13:52:45

回答

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; 

DEMO.

+0

感謝您的回覆,通過這個我成功實現了一個臨時解決方案來完成我的工作:) – BlackMario 2012-07-06 15:06:07

+0

歡迎您:-) – 2012-07-06 15:07:04

1

由於您似乎只是在討論IE,所以我建議您使用IE-only beforedeactivate事件。 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

相關問題