Это длинный,
Помещение
Был вызван, чтобы помочь клиенту с исправлением некоторых ошибок в текущем проекте. Нужно было исправить страницу со списком вакансий. У вас есть список заданий, вы нажимаете одно, и если JavaScript активирован, выполняется вызов AJAX для динамической загрузки сведений о задании в существующий элемент (DIV # emploi_details). Если JS не активирован, он просто перезагружает страницу с деталями задания (менее важно).
Я запрыгнул на их лабораторные серверы, чтобы работать на сайте разработчика.
Проблема
По сути, IE7 (сначала) не отображал контент, загруженный через $ (). Load (). IE6 работал безотказно с innerHTML. Запросы отправляются, и я получаю ответ каждый раз. Я получаю данные, могу предупредить их и увидеть их, но фактический сброс содержимого не работает. Safari, Firefox, без проблем. Элемент DIV # emploi_details, в который я загружаю информацию, имеет отображение CSS: none; в таблицах стилей и отображается после загрузки контента (другие не столь важные детали).
show_emploi = function(id, succ_id)
{
$('#emploi_details').fadeOut(800, function() {
var $$ = $(this);
$$.load('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
if (isIE6) document.getElementById('emploi_details').innerHTML = data;
$$.show();
});
$('#bgContent').fadeOut();
});
}
Решение
Вначале у меня сложилось впечатление, что, возможно, $ (). Load () просто работает, поэтому я изменил его на $ .get () для большего контроля над манипулированием загруженным содержимым.
$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
$$.empty().append(data).show();
});
Это работает. Во всех браузерах, включая IE6 и IE7. Нет проблем. Странно, но вы знаете, работает ли он и является ли он полностью защищенным, не задавайте вопросов.
Поворот сюжета
Теперь вот где дерьмо становится странным. Я посчитал ошибку исправленной и применил решение к живому веб-сайту, и ... оно не работает. IE просто не нравится. Озадаченный после попытки $ .ajax и других вещей, я в конечном итоге использую это для живого сайта:
$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
document.getElementById('emploi_details').innerHTML = data;
$$.show();
});
И это работает во всех браузерах, потому что нет ничего лучше, чем barebones JS, чтобы сделать вещи. Обязательно, это исправление также работает на веб-сайте разработчика.
«Продолжение следует»
В функции встраивания контента есть что-то, что работает не для всех браузеров (и, конечно, для серверов).
В общем, мой вопрос - вопрос WTF. Я не могу понять, почему один работает с одной стороны, а тот же не работает с другой стороны или даже почему он никогда не работал должным образом в начале ($ (). Load ()). Это явно не разные версии jQuery (1.2.6), так как это был мой первый инстинкт проверки версии фреймворка.
Во всяком случае, интересная загадка ИМО.
Надеюсь, у кого-то там, в Стэкленде, есть данный Богом ответ.
Спасибо