[英]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,如果是,則不進行折疊。 (如果有某種原因為什么這應該是不可能的,那么您可能遇到了不同的問題。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.