我正在升级脚本以使其跨浏览器。我目前的代码如下。
function testFocus(){
var testSelection = document.getElementById('chattext').contentWindow.
window.document.selection.createRange().parentElement();
while (testSelection)
{
if (testSelection.id == "chatContent") {
return true;
}
testSelection = testSelection.parentElement;
}
return false;
}
然而,以下代码在现代浏览器中不再有效。目前上面的代码必须选择文本。它只需要检查文本框是否有焦点。该函数用作按钮/javascript 添加文本之前的检查。
最佳答案
令我印象深刻的是,您可以使用事件监听器来设置变量。唯一的问题是 IE 使用 attachEvent(event, callback)
而不是 addEventListner
所以你实际上必须添加代码
<script type="text/javascript">
var ChatHasFocus = false;
var ts = document.getElementById('chattext');
function setFocus() {ChatHasFocus = true;}
function setNoFocus(){ChatHasFocus = false;}
if (ts.addEventListener != undefined) {
ts.addEventListener('focus', setFocus, false);
ts.addEventListener('blur', setNoFocus, false);
} else if (ts.attachEvent != undefined) {
ts.attachEvent('onfocus', setFocus);
ts.attachEvent('onblur', setNoFocus);
} else {
ts.onmouseover = setFocus;
ts.onmouseout = setNoFocus;
}
</script>
编辑 - 我添加了脚本标签来向您展示它是如何添加到您的文档中的。我已经在 firefox 和 chrome 中测试过,它似乎可以工作,但是将 IE 沙箱放在一起对我来说可能有点困难。我确定我在那里遗漏了一些小东西 - 我会看一看。
edit2 我的 IE 代码有误。原来你没有在 'undefined'
周围加上引号我已经修复了上面的代码以反射(reflect)在 firefox、chrome 和 IE6 中经过测试和 wotkign 的答案。我没有任何其他 IE 可以测试。
关于Javascript,检测文本框是否有焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388616/