Проверьте следующий код (демонстрация) в браузерах IE6, IE7, Firefox2+, Firefpx3+, Opera9.6+, Safari3.1+:
<div id = test>
<a href =#> тест </a>
</div>
<div id = result> </div>
<script type = text/javascript>
(function () {
var test = document.getElementbyId ('test');
предупреждение (test.innerhtml);
var result = document.getElementbyId ('result');
result.innerhtml = test.innerhtml;
предупреждение (result.innerhtml)
}) ();
</script>
В результате будет обнаружено, что значение hREF элемента A в результате. INNERHTML появилось во второй раз в браузерах IE6, и IE7 становится абсолютным путем.
Фактически, наши предки давно столкнулись с этими проблемами (благодаря Ю Бо за предоставленную информацию):
Решение в области обработки было упомянуто в приведенной выше статье, которая заключается в использовании метода getattribute ('href', 2) в соответствии с т.е. Microsoft расширяет второй параметр на этот метод, который может быть установлен на 0, 1, 2, и если установлено на 2, возвращается исходное значение свойства.
Сценарий прикреплен к:
(function () {
var test = document.getElementbyId ('test');
предупреждение (test.innerhtml);
var result = document.getElementbyId ('result');
result.innerhtml = test.innerhtml;
if (/*@CC_ON!@*/0) {// Если т.е.
var links1 = test.getElementsbytagname ('a');
var links2 = result.getElementsbytagname ('a');
for (var i = 0, len = links1.length; i <len; ++ i) {
Links2 [i] .href = links1 [i] .getAttribute ('href', 2);
}
}
предупреждение (result.innerhtml);
}) ();
В процессе поиска этой проблемы я также искал интересную ошибку, найденную Хедгером Вангом: Когда новое значение атрибута Href сбросится в IE, если текст ссылки содержит http: // или @, его innerhtml будет отображаться неправильно и будет отображаться в качестве атрибута Set href.
Обходной путь (SHREF - это новое значение HREF, которое будет установлено):
shref = 'http://www.hedgerwow.com';
var ismsie = /*@cc_on!@* /false;
if (ismsie) {
shref = '' + shref; // Добавить дополнительное место перед новым HREF
};
Подробная информация: «Internet Explorer может неправильно сбросить Anchor Innerhtml, когда назначается новый HREF»