3

我需要更新一些旧的 Javascript 以兼容跨浏览器。该代码最初是为 IE6 创建的,并且由于 HTML 的布局方式而大量使用 nextSibling 和 previousSibling。

显然 nextSibling 和 previousSibling 在 Firefox 等中的工作方式不同。下一个最佳选择 nextElementSibling 在旧的 IE 浏览器中不起作用。看来我需要做的是创建一个可以在大多数浏览器中使用的nextElementSibling等效函数。

这是我的尝试,似乎不太正确:

function getNextElementSibling(CurrentElement) {
    if (CurrentElement.nextElementSibling) {
        return CurrentElement.nextElementSibling
    } else {
        do {
            CurrentElement = CurrentElement.nextSibling;
        } while (CurrentElement && CurrentElement.nodeType !== 1);
        return CurrentElement;
    }
} 

需要做什么来修复/更换它?

请注意,JQuery 和其他库不是一个选项

4

1 回答 1

1

我有同样的问题,我觉得奇怪的是 dojo-framework(我正在使用 v1.7)没有为此提供方便的方法。

我的浏览器兼容性问题与 IE 版本 7,8 和 9 以及 webkit 浏览器(最新版本)有关,我还在 Firefox 14 上对其进行了测试,并且似乎可以正常工作。

function getNextElementSibling(element) {

    if (element.nextElementSibling) {

        return element.nextElementSibling;
    } else {

        return element.nextSibling;
    } 
}
于 2012-07-26T11:19:02.680 回答