Quero criar um bit simples de código JS que cria um elemento de imagem em segundo plano e não exibe nada. O elemento de imagem chamará um URL de rastreamento (como Omniture) e precisa ser simples e robusto e funcionar no IE 6 = <apenas. Aqui está o código que tenho:
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);
Esta é a maneira mais simples, mas mais robusta (sem erros) de fazer isso?
Não posso usar um framework como o jQuery. Ele precisa estar em JavaScript simples.
javascript
dhtml
Pete
fonte
fonte
Respostas:
px
é apenas para CSS. Use:para definir uma largura por meio de HTML ou:
para configurá-lo por meio de CSS.
Observe que as versões antigas do IE não criam uma imagem adequada com
document.createElement()
, e as versões antigas do KHTML não criam um Nó DOM adequado comnew Image()
, então se você quiser ser totalmente compatível com versões anteriores, use algo como:Também tenha um pouco de cuidado
document.body.appendChild
se o script pode ser executado quando a página está no meio do carregamento. Você pode acabar com a imagem em um lugar inesperado ou um erro estranho de JavaScript no IE. Se você precisar adicioná-lo no momento do carregamento (mas depois que o<body>
elemento for iniciado), poderá tentar inseri-lo no início do corpo usandobody.insertBefore(body.firstChild)
.Para fazer isso de forma invisível, mas ainda com a imagem realmente carregada em todos os navegadores, você pode inserir uma posição absolutamente fora da página
<div>
como o primeiro filho do corpo e colocar quaisquer imagens de rastreamento / pré-carregamento que você não deseja que sejam visíveis lá .fonte
new Image()
funcionaria melhor em todas as circunstâncias?fonte
fonte
console.log
entre cada par de linhas, assim você saberá exatamente qual linha está congelando.jQuery:
Descobri que isso funciona ainda melhor porque você não precisa se preocupar com o escape de nada do HTML (o que deve ser feito no código acima, se os valores não estiverem codificados). Também é mais fácil de ler (da perspectiva JS):
fonte
<img ... />
no DOM, faça isso com innerHTML então. Eu simplesmente não entendo: /Para ser mais completo, eu sugiro usar o método InnerHTML também - embora eu não o chame da melhor maneira ...
A propósito, innerHTML não é tão ruim
fonte
Caminho mais curto:
fonte
Você tem permissão para usar uma estrutura? jQuery e Prototype tornam esse tipo de coisa muito fácil. Aqui está um exemplo em Prototype:
fonte
você poderia simplesmente fazer:
Simples :)
fonte
Apenas para adicionar um exemplo de JS html completo
fonte
Como outros apontaram, se você tem permissão para usar um framework como o jQuery, a melhor coisa a fazer é usá-lo, pois é muito provável que ele o faça da melhor maneira possível. Se você não tem permissão para usar um framework, então eu acho que manipular o DOM é a melhor maneira de fazer isso (e na minha opinião, a maneira certa de fazer isso).
fonte
Este é o método que sigo para criar um loop de tags img ou uma única tag como desejar
ou
fonte