簡體   English   中英

為什么 javascript collapseToStart() 會拋出錯誤

[英]Why does javascript collapseToStart() throw an error

我正在運行這段代碼,用於取消選擇用戶在 iframe 中選擇的單詞,當他選擇 iframe 之外的另一個單詞時:

function getCurrentWord() {
    var range;
    var w = "";

    if (document.selection) {
        ////IE
        range = document.selection.createRange();
        w = trim(range.text);
    } else {
        ////NOTIE
        w = trim(window.getSelection().toString());
    }

    if (w != "" && document.getElementById("frmBook")) {
        var oTextRange;
        if (document.selection) {
            ////IE
            oTextRange = document.getElementById("frmBook").contentWindow.document.selection.createRange();
            oTextRange.expand("word");
            oTextRange.execCommand("unselect") ;
        } else {
            ////NOTIE       
            oTextRange = document.getElementById("frmBook").contentWindow.getSelection();
            oTextRange.collapseToStart();
        }
    }

    if (w == "" && document.getElementById("frmBook")) {
        if (document.selection) {
            ////IE
            range = document.getElementById("frmBook").contentWindow.document.selection.createRange();
            w = trim(range.text);
        } else {
            ////NOTIE
            w = trim(document.getElementById("frmBook").contentWindow.getSelection().toString());
            /*
            IF I PUT IT HERE IT DOESN'T SHOW AN ERROR
            oTextRange = document.getElementById("frmBook").contentWindow.getSelection();
            oTextRange.collapseToStart();
            */
        }
    }
    return w;
}

問題是我在 Firefox 錯誤控制台上收到此錯誤:

時間戳:2012 年 9 月 5 日 12:20:42 μμ 錯誤:未捕獲的異常:[異常...“嘗試使用不可用或不再可用的對象”代碼:“11”nsresult: "0x8053000b (NS_ERROR_DOM_INVALID_STATE_ERR)" 位置:" http://192.168.0.88/test.js行:295"]

當代碼位於

oTextRange.collapseToStart();

線。

我試圖在這樣的一行中運行它:

document.getElementById("frmBook").contentWindow.getSelection().collapseToStart();

但我得到了同樣的錯誤

frmBook 是 iframe 的 ID

如果我運行那段代碼導致我注釋掉的錯誤,它不會顯示錯誤,這很奇怪!

有誰知道我做錯了什么? 提前致謝

查看(可能是舊版本) http://dxr.lanedo.com/mozilla-central/layout/generic/nsSelection.cpp.html的源代碼,如果沒有任何內容,似乎collapseToStart會產生該錯誤實際選擇。 您可以檢查oTextRange.rangeCount是否 < 1,如果是,則不進行折疊。 (如果有某種原因為什么這應該是不可能的,那么您可能遇到了不同的問題。)

為什么

[英]Why does <!— Not Throw a Syntax Error?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM