jquery append и javascript appendChild не работают в течение периода тегов html - PullRequest
0 голосов
/ 16 июля 2011

Я начал пытаться добавить метатеги в теги <head>, но теперь обнаружил, что ничего не могу добавить ни к каким HTML-тегам.Не <body>, <p>, <h1>, ничего, но он отлично работает с div id и классами.

Вот html

    <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="append.js"></script>
<title>appendTest</title>
</head>
<body>

<div id="test">
<p>
Hello World
</p>
</div>

</body>
</html>

А вот примеры append.js, которые я пробовал

    function loadmeta(){
var meta = "<meta name='og:title' content='some random content' />";
document.getElementsByTagName('head').item(0).appendChild(meta);
}

window.onload = function(){
loadmeta();
}




/*jquery style*/

$(document).ready(function(){
$('html').append('meta name="testing" content="some content"/>');
});

$(document).ready(function(){
$('meta name="testing" content="some content"/>').appendTo('html');
});

Теперь я попробовал функции jquery и append, и appendTo с помощьюp # test для div, и я могу добавить к нему обе функции.Однако я попытался с головой, телом, p, и это не работает ни с одним из них.

Я начинаю задумываться, есть ли какая-то настройка безопасности на моем сервере, которая останавливает его, потому что у меня естьиспользовал append для добавления стилей text и css и добавления к телу раньше и не имел проблем.

firebug не дает ошибок, и я пробовал это в FF и Chrome.

Хотя я нея не хочу чувствовать себя идиотом, которого я бы полюбил, если бы кто-нибудь увидел какую-то глупую ошибку, которую я сделал.

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 июля 2011

Ни один из ваших кодов не верен:

Прежде всего, для вашей версии только для javascript appendChild ожидает узел, а не строку HTML.

Вы можете сделать что-то вроде:

var meta = "<meta name='og:title' content='some random content' />";
var head = document.getElementsByTagName('head')[0];
head.innerHTML = meta+head.innerHTML;

В обоих методах jQUery отсутствует открывающий тег HTML.

1 голос
/ 16 июля 2011

Вы неправильно создаете элемент

function loadmeta(){
  var meta = document.createElement("meta");
  meta.name='og:title'; // or meta.setAttribute("name","og:title");
  meta.content='some random content';
  document.getElementsByTagName('head')[0].appendChild(meta);
}

Однако я даже не уверен, что ваши метатеги будут интерпретироваться после загрузки страницы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...