Установка innerHTML с помощью метода JQuerys html () в IE 8 не работает - PullRequest
0 голосов
/ 15 декабря 2011

У меня

$('#structure').html(html);

Это отлично работает в FireFox.IE 8 не отображает HTML.Я также попробовал это с простым текстом, например.

$('#structure').html("Test");

или

$('#structure').html("<h3>Test</h3>");

Все не работает с IE 8, но в Firefox.Поэтому я не думаю, что это проблема с недействительным html.

, если я заменю его на

document.write(html);

IE правильно отображает содержимое.

Я потерян,Я также попытался getElementById и установив свойство innerHTML или .empty и добавить.В основном все, что я пробовал, работало в FF, ничего в IE 8.

Код запускается в событии .change (), которое правильно выполняется и в IE.

Любые идеи?

EDIT:

html возвращается сторонним коммерческим плагином.Он возвращает специфичный для браузера код для отображения компонента ActiveX (IE) или плагина (FF).Возвращенный HTML работает.Это не единственное место, где я использую это.

Может быть, вы не можете асинхронно загружать ActiveX?это объясняет все.

$(document).ready(function() {

    $('#ID').change(function() {            
        var value = $(this).val();
        getStructure(value);
    });
});


function getStructure(id){          
    $.get(
        'getStructure.php?id=' + id,
        function(data){     
            // 3rd party function call:
            var html = getObjectTag(182, 172, data.Structure); // data["Structure"] does not work too in IE, it does in FF
            // alert(html); // is displayed also in IE when uncommented
            $('#structure').html(html); 
            // alert(html); // is displayed also in IE when uncommented             
    }, 
    "json"
    );          
}
<div class="cssform">
    <div><label>ID</label><input id="ID" type="text"/></div>
</div
<div id="structure"></div>

Обратите внимание, что в другом приложении я использую:

var html = getObjectTag(182, 172, aData[0]);
$('td:eq(0)', nRow).html(html);

где aData - параметр массива вызывающей функции.Это используется для отображения объекта в таблицах данных плагина jquery, и здесь все работает для IE 8 и FF без проблем.

EDIT2:

Дальнейший «анализ» заставляет меня поверить, что div сid = структура не найдена в IE правильно по тем или иным причинам.

document.getElementById("structure").innerHTML = html;

приводит к ошибке "document.getElementById (...)" является нулевым или не является объектом.используя jquery, селектор, вероятно, ничего не возвращает и, следовательно, больше ничего не делается и ошибки не возникает.Вопрос в том, почему элемент не найден?Не имеет смысла для меня.

1 Ответ

0 голосов
/ 19 декабря 2011

Хорошо.Нашел ответ:

<div class="cssform">
    <div><label>ID</label><input id="ID" type="text"/></div>
</div <!-- Missing closing > which somehow was accepted by FF -->
<div id="structure"></div>
...