我有一个要求,我应该在页面中获取活动元素并根据元素执行操作。该方法应该在ie8和& IE11。下面是适用于IE11但不适用于IE8的代码。我知道在下面的代码中使用的filter或queryselectorall导致了问题。有人可以帮我解决这个问题。
function focusNextElement(keyCode) {
var focussableElements = 'select:not([disabled]), button:not([disabled]),input[type=radio]:not([disabled]),input[type=text]:not([disabled]), [tabindex]:not([disabled]):not([tabindex="-1"])';
if (document.activeElement && document.activeElement.form) {
var focussable = Array.prototype.filter.call(document.activeElement.form.querySelectorAll(focussableElements),
function (element) {
return element.offsetWidth > 0 || element.offsetHeight > 0 || element === document.activeElement
});
var index = focussable.indexOf(document.activeElement);
if (index > -1) {
alert('indide');
var nextElement = focussable[index + 1] || focussable[0];
nextElement.focus();
}
}
event.preventDefault();
return false;
}
if (document.addEventListener !== undefined)
{
document.addEventListener('keydown', function (event) {
if (event.keyCode == 9) {
if (event.target.nodeName === 'INPUT') {
focusNextElement(event.keyCode);
}
}
});
}
else
{
document.attachEvent('onkeydown', function (event) {
if (event.keyCode == 9) {
if (event.srcElement.tagName === 'INPUT') {
focusNextElement(event.keyCode);
}
}
});
}
答案 0 :(得分:0)
我需要获取页面中的所有活动元素,并且需要根据返回的值执行一些操作。
当页面在IE11中呈现但在IE8中不呈现时,以下代码正在工作。有人可以帮我修复代码,以便它也可以在IE8中工作。
var focussableElements ='select:not([disabled]),button:not([disabled]),input [type = radio]:not([disabled]),input [type = text]:not([disabled] ],[tabindex]:not([disabled]):not([tabindex =“ - 1”])';
if (document.activeElement && document.activeElement.form) {
var focussable = Array.prototype.filter.call(document.activeElement.form.querySelectorAll(focussableElements),
function (element) {
return element.offsetWidth > 0 || element.offsetHeight > 0 || element === document.activeElement
});
var index = focussable.indexOf(document.activeElement);