Это было давно, но я наконец нашел время, чтобы снова повозиться с этим. Вышеуказанные проблемы все еще существуют, но я думаю, что это происходит.
Когда я загружаю исходные изображения, тогда да, файл загружается и объекты изображения генерируются. Но кажется, что атрибуты еще не верны, и они не будут, пока изображение фактически не добавлено в DOM сайта и не отрендерено. Div / image в hide () в IE не имеет никакой информации об измерениях, в Safari есть некоторая доступная информация. Например, без добавления следующего div в любом месте
var test = $("<div><img src='test.jpg'></div>")
изображение содержит следующую информацию:
width() = 0
attr("width") = 600
,
css("width") = ""
и
img[0].clientWidth = 0
.
Это на Сафари; в IE это то же самое, за исключением attr("width") = 0
и css("width") = "auto"
. Теперь я не могу это использовать, и именно это сломало мой сценарий и почему я опубликовал свой первоначальный вопрос. Однако в тот момент, когда я добавляю этот div и отображаю его, все правильные значения появляются в объекте изображения.
Я пишу небольшую галерею, которая показывает все изображения, которые у меня есть во втором загружаемом файле .html; эта галерея, однако, вычисляет и размещает миниатюры и подготавливает изображения, которые она показывает, в полном разрешении. Чтобы это выглядело нормально, я в основном хотел создать все это скрытым, а затем добавить его. Увы, кажется, что вся эта идея не оправдается. Друг предложил загрузить все в крошечный iframe слева, где он не виден, и работать с этим. Возможно, это путь.
Еще одна вещь, которую я заметил, и которая, похоже, очень тесно связана с вышеупомянутой проблемой загрузки, это clone (). Кажется, что если изображение отображается,
var newimg = img.clone()
генерирует тот же «пустой» объект изображения, с которым мне приходится иметь дело выше. Даже если исходное изображение видно и содержит все нужные атрибуты, его клон не отображается.
Сейчас я не вижу другого пути, кроме как переосмыслить и переписать части моей галереи.