Javascript IE6 getElementsByTagName не работает - PullRequest
1 голос
/ 31 марта 2012

У меня есть пример страницы, где я пытаюсь поместить wmode каждого элемента youtube внутри страницы в «прозрачный».

Чтобы сделать это, мне нужно получить все параметры «object>"и" вставлять "теги на страницу.Страница, на которую я ссылаюсь, работает как шарм во всех браузерах, кроме IE6 (другие IE еще не проверялись).С IE6 я не могу поймать "params", так как document.getElementsByTagName('param') возвращает пустой объект, но это не происходит с "embed"!Он также не будет работать с document.getElementsByTagName('object')

Вот страница http://dl.dropbox.com/u/4064417/provaJs.html

Есть предложения, почему он не возвращает только теги "param"?

Спасибозаранее!

Ответы [ 3 ]

1 голос
/ 31 марта 2012

Я понимаю, что вы хотите, чтобы ваше приложение было обратно совместимым, но это упражнение противоречит общему направлению отрасли и его усилиям, направленным на то, чтобы упустить IE6 (даже Google отказался от поддержки для IE6). Ваше время может быть лучше потрачено, если вы сосредоточитесь на создании лучшего веб-интерфейса для псевдомодернистских браузеров вместо того, чтобы беспокоиться о старых.

Пища для размышлений - возможно, используйте скрипт обнаружения браузера и предложите своим пользователям обновить его, чтобы они могли использовать ваш сайт во всей его современной красе:)

Все это, как говорится, предложение ZER0 является мертвым. Найдите теги «object» на странице, а затем перебирайте его дочерние элементы, пока не найдете нужный тег. Если вы не можете захватить теги объекта с помощью getElementsByTagName, вам, возможно, придется выполнить итерации по нодлисту document.body.childNodes, проверяя наличие typeof (N) или N.NodeName по пути .

1 голос
/ 31 марта 2012

Я помню некоторые проблемы с тегами <param/> и getElementsByTagName, но я давно не пишу код в IE6. Вместо того, чтобы запрашивать у document, попробуйте получить параметры, вызывающие getElementsByTagName от самого <object /> и посмотреть, поможет ли это:

var objects = document.getElementsByTagName("object");

for (var i = 0, object; object = objects[i++];) {
    var params = object.getElementsByTagName("param");

    alert(params.length);
}
0 голосов
/ 09 апреля 2012

Если вы должны поддерживать браузеры как старый IE6, я настоятельно рекомендую использовать такую ​​библиотеку, как jQuery, а не пытаться получить прямой доступ к DOM.

IE6 имеет огромное количество ошибок и причуд, которые могут сломать даже самый простой и самый безобидный из кода Javascript. JQuery делает все возможное, чтобы абстрагироваться от ошибок и недостатков браузера от разработчика, что позволяет вам писать код, который работает во всех браузерах.

Например, вместо использования document.getElementsByTagName('object'), вы можете использовать код jQuery $('object'), который даст вам тот же конечный результат, но позволит обойти любые ошибки в любом браузере, запущенном вашим конечным пользователем.

jQuery делает гораздо больше, чем просто скрывает ошибки браузера, конечно, но если вы работаете с IE6, это уже является достаточной причиной для его использования.

(конечно, доступны другие библиотеки, если вам действительно не нравится jQuery по какой-то причине)

...