Я хочу создать простой фрагмент JS-кода, который создает элемент изображения в фоновом режиме и ничего не отображает. Элемент изображения будет вызывать URL-адрес отслеживания (например, Omniture) и должен быть простым и надежным и работать только в IE 6 = <. Вот код, который у меня есть:
var oImg = document.createElement("img");
oImg.setAttribute('src', 'http://www.testtrackinglink.com');
oImg.setAttribute('alt', 'na');
oImg.setAttribute('height', '1px');
oImg.setAttribute('width', '1px');
document.body.appendChild(oImg);
Это самый простой, но самый надежный (без ошибок) способ сделать это?
Я не могу использовать фреймворк вроде jQuery. Это должен быть простой JavaScript.
javascript
dhtml
Пит
источник
источник
Ответы:
px
только для CSS. Используйте либо:чтобы установить ширину через HTML, или:
установить его через CSS.
Обратите внимание, что старые версии IE не создают правильный образ
document.createElement()
, а старые версии KHTML не создают правильный узел DOMnew Image()
, поэтому, если вы хотите быть полностью обратно совместимыми, используйте что-то вроде:Также будьте осторожны,
document.body.appendChild
если скрипт может выполняться, когда страница находится в процессе загрузки. Вы можете получить изображение в неожиданном месте или получить странную ошибку JavaScript в IE. Если вам нужно иметь возможность добавить его во время загрузки (но после<body>
запуска элемента), вы можете попробовать вставить его в начале тела, используяbody.insertBefore(body.firstChild)
.Чтобы сделать это незаметно, но при этом сохранить изображение, фактически загруженное во всех браузерах, вы можете вставить абсолютно позиционированное вне страницы
<div>
в качестве первого дочернего элемента тела и поместить туда любые изображения для отслеживания / предварительной загрузки, которые вы не хотите видеть. .источник
new Image()
сработает лучше при любых обстоятельствах?источник
источник
console.log
между каждой парой строк, чтобы вы точно знали, какая строка замораживает их.jQuery:
Я обнаружил, что это работает даже лучше, потому что вам не нужно беспокоиться о том, что HTML ничего не ускользнет (что должно быть сделано в приведенном выше коде, если значения не были жестко закодированы). Также легче читать (с точки зрения JS):
источник
<img ... />
в DOM, тогда сделайте это с помощью innerHTML . Я просто не понимаю этого: /Для полноты картины я бы также предложил использовать способ InnerHTML - хотя я бы не назвал его лучшим способом ...
Кстати, innerHTML не так уж и плох
источник
Кратчайший путь:
источник
Вы можете использовать фреймворк? jQuery и Prototype делают подобные вещи довольно простыми. Вот образец в Prototype:
источник
вы можете просто сделать:
Просто :)
источник
Просто чтобы добавить полный пример html JS
источник
Как указывали другие, если вам разрешено использовать фреймворк, такой как jQuery, лучше всего использовать его, поскольку он, скорее всего, сделает это наилучшим образом. Если вам не разрешено использовать фреймворк, я думаю, что манипулирование DOM - лучший способ сделать это (и, на мой взгляд, правильный способ сделать это).
источник
Это метод, которым я следую, чтобы создать цикл тегов img или один тег, как вы хотите
или
источник