Использовать фрагменты из библиотеки поддержки -
android.support.v4.app.Fragment
, а затем переопределить
void onAttach (Context context) {
this.context = context;
}
Таким образом, вы можете быть уверены, что контекст всегда будет ненулевым значением.
Я не нашел никакой подробной ссылки, но на основе комментария в примере MDC - HTMLImageElement
, кажется, что Image
является частью уровня DOM 0, тогда как document.createElement
является частью уровня DOM 2 .
Уровень DOM 0 был изобретен Netscape и предоставил возможность доступа к определенным элементам веб-сайта. В основном все браузеры поддерживают его для обратной совместимости. Но, честно говоря, я не понимаю , почему существует конструктор Image
, потому что, насколько я понял, не было никакого способа манипулировать документом с уровнем DOM 0. Возможно, он использовался только для браузера для создания объектов.
Уровень DOM 2 является официальным стандартом, разработанным W3C.
Для получения дополнительной информации о Уровни DOM, посмотрите на quirksmode.org - Уровень 0 DOM и Википедия .
Я где-то читал что
Image
,Form
иElement
называются объектами хоста , это правда?Да.
Если это так, то какие объекты-хосты?
Спецификация ECMAScript мотивирует объекты-хосты таким образом:
ECMAScript объектно-ориентированного языка программирования для выполнения вычислений и манипулирования вычислительными объектами в среде хоста. ECMAScript, как он определен здесь, не предназначен для вычислительной самодостаточности; действительно, в этой спецификации нет положений для ввода внешних данных или вывода вычисленных результатов. Вместо этого ожидается, что вычислительная среда программы ECMAScript предоставит не только объекты и другие объекты, описанные в этой спецификации, но и определенные объекты хоста, специфичные для среды, описание которых и поведение которых выходит за рамки данной спецификации, за исключением того, чтобы указать, что они могут предоставлять определенные свойства, к которым можно получить доступ, и некоторые функции, которые могут быть вызваны из программы ECMAScript.
и
объект объекта-хозяина, предоставленный средой-хозяином, для завершения среды выполнения ECMAScript. ПРИМЕЧАНИЕ. Любой объект, который не является родным, является объектом-хостом.
Таким образом, любой объект, который не определен в спецификации и предоставлен с помощью среды, является хост-объектом . Это, например, в браузере (среди прочих):
window
,document
иconsole
.
Я не знаю, какова техническая разница, но я просто исправил ошибку IE8, изменив ее с new Image()
на document.createElement('img')
в следующем коде. В IE8 обратный вызов onload никогда не запускался при использовании конструктора Image
.
newImage = document.createElement('img');
//newImage = new Image();
newImage.onload = function () {
callback(this.width, this.height);
};
newImage.src = image.src;
В моей команде мы создаем угловое приложение. Требование к функции состояло в том, чтобы предварительно загружать изображения при загрузке компонентов, чтобы повторно использовать их, не загружая снова, когда это необходимо в определенном месте в нашем приложении с одной страницей.
Мы попытались предварительно загрузить изображения в DOM с помощью create new Image()
, но когда мы повторно использовали URL-адрес изображения src, браузер всегда перезагружал исходный файл или проверял, изменен ли заголовок ( если включен кеш), что означает, что предварительная загрузка была успешной, но для каждого повторного использования обратный переход к серверу был сделан снова.
Когда мы сделали то же самое с document.createElement('img')
, источник изображения был не перезагружен , скорее повторно использован из локальной памяти документа и никакой дополнительный запрос не был сделан для URL-адреса img src.
Я действительно не понимаю, почему, но это большая разница, которую мы обнаружили. В случае, если кому-то еще нужно повторно использовать предварительно загруженные изображения, более поздним было бы пойти, чтобы сохранить некоторые полосы пропускания и несколько запросов в оба конца:)
Две строки эквивалентны и оба создают объект HTMLImageElement. Единственное различие заключается в XML-документе со смешанными пространствами имен - new Image()
всегда возвращает элемент <img>
с пространством имен XHTML, document.createElement('img')
не всегда это делает.
document.createElement('img')
не всегда это делает (это зависит от типа документа)?
– Iswanto Arif
5 June 2011 в 09:54
document.createElementNS
для: developer.mozilla.org/en/DOM/document.createElementNS
– Felix Kling
5 June 2011 в 09:58
Я лично буду придерживаться createElement, потому что тогда его не особый случай сделать изображение, все делается так же, как и они идентичны. Я также заметил, что jquery использует метод appendChild (node) для всего, и я не уверен в разница между этим и двумя методами в ваших вопросах, но jquery действительно работает с перекрестным браузером
document
считается объектом хоста i>? Разве это не определено в спецификации уровня DOM 1? w3.org/TR/REC-DOM-Level-1/level-one-core.html#i-Document – rickchristie 5 June 2011 в 10:10document
предоставляется браузером в качестве интерфейса для JavaScript для доступа к DOM. Он не является частью спецификации ECMAScript (самого JavaScript). – Felix Kling 5 June 2011 в 10:12Image
в основном использовалось для «предварительной загрузки», изображения, используемые динамически в пределах страницы в кеш браузера, как правило, для эффектов переключения изображений, таких как опрокидывания. Он был создан в Netscape 3, который предоставил очень ограниченный набор механизмов для динамического документооборота (переключение изображений, манипулирование элементами формы и представление формы и обновление текста строки состояния, как я помню). – Tim Down 5 June 2011 в 12:29