我正在运行这段代码,用于在用户选择 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
如果我运行那段导致我已将其注释掉的错误的代码,它不会显示错误,这很奇怪!
有人知道我在做什么错吗?提前致谢