Estou trabalhando com um CMS, que impede a edição de código-fonte HTML para o <head>
elemento.
Por exemplo, quero adicionar o seguinte acima da <title>
tag:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
javascript
jquery
css
xhtml
Jitendra Vyas
fonte
fonte
<meta>
tags dinamicamente não tenha efeito, dependendo do que são e de qual navegador está envolvido.Respostas:
Você pode selecioná-lo e adicioná-lo normalmente:
fonte
insertBefore
,insertAfter
é o que você deseja.JavaScript:
Faça o elemento DOM assim:
fonte
jQuery
JavaScript:
fonte
...
porque não senti que fosse uma parte central da questão e também, no momento em que este artigo foi escrito, não havia nenhum exemplo prático sobre o que ele queria colocar em mente. mas sim, ele precisa ser um elemento DOM.Você pode usar
innerHTML
apenas para concat a string de campo extra;No entanto, você não pode garantir que as coisas extras que você adicionar ao cabeçote serão reconhecidas pelo navegador após o primeiro carregamento, e é possível que você obtenha um FOUC (flash de conteúdo não estilizado) conforme as folhas de estilo extras são carregadas.
Não vejo a API há anos, mas você também pode usar
document.write
, que é o que foi projetado para esse tipo de ação. No entanto, isso exigiria que você bloqueie a renderização da página até que sua solicitação AJAX inicial seja concluída.fonte
Nos navegadores mais recentes (IE9 +), você também pode usar document.head :
Exemplo:
fonte
Crie um elemento temporário (por exemplo
DIV
), atribua seu código HTML à suainnerHTML
propriedade e, em seguida, anexe seus nós filhos aoHEAD
elemento, um por um. Por exemplo, assim:Em comparação com a reescrita de todo o
HEAD
conteúdo por meio de seuinnerHTML
, isso não afetaria os elementos filhos existentes do elemento deHEAD
forma alguma.Observe que os scripts inseridos dessa forma aparentemente não são executados automaticamente, enquanto os estilos são aplicados com sucesso. Portanto, se você precisar que scripts sejam executados, deve carregar os arquivos JS usando Ajax e, em seguida, executar seu conteúdo usando
eval()
.fonte
body
, mas isso pode realmente ser feito dentro dahead
-tag? Fiquei com a impressão de que as tags só é permitido, ondebase
,link
,meta
,title
,style
escript
?DIV
elemento é apenas um contêiner temporário com o propósito de analisar o código HTML . Você não deve inserir oDIV
próprio noHEAD
. Você deve inserir seus nós filhos . Veja o exemplo que adicionei à resposta.temp
elemento.” Veja a documentação de Node.firstChild () .Experimente um javascript puro:
Biblioteca JS:
Tipo:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
ou jQuery:
fonte
Com jquery, você tem outra opção:
de qualquer maneira, está funcionando. Opção JavaScript, outros disseram, isso também é correto.
fonte
.html()
não recuperará todas as propriedades DOM. (A instância mais comum desse problema, e a mais visível, é ao usar código semelhante para adicionar novos campos a um formulário. O atributo value representa o valor padrão de um campo, portanto, obtê-lohtml()
e defini-lo de volta irá redefinir todos os campos para seus valores padrão).