Скрипт без кэширования без использования Jquery
Здравствуйте, я пытаюсь создать скрипт, который вставляет в любую веб-страницу метатег, чтобы принудительно не кэшировать.
В настоящее время это мой код, и я не хочу использовать Jquery (как показано в Script для принудительного поведения кэша IE8).
var MAXlen = document.getElementsByTagName('head')[0].childNodes.length;
//Get the length of childnodes of head.
while(MAXlen--)
{
document.getElementsByTagName('head')[0].childNodes[MAXlen+1] = document.getElementsByTagName('head')[0].childNodes[MAXlen];
//store every node one place after.
if(MAXlen == 0)
document.getElementsByTagName('head')[0].childNodes[0].innerHTML = '<META HTTP-EQUIV="Pragma" CONTENT="no-cache">';
//place this hmtlcode into the first element of head.
break;
}
1 ответ
Решение
Я бы использовал... prepend без JQuery:
parent.insertBefore(child, parent.firstChild);
parentNode.insertBefore (newChild, refChild);
Вставляет узел newChild
как ребенок parentNode
перед существующим дочерним узлом refChild
, (возврат newChild
.)
Если refChild
нулевой, newChild
добавляется в конец списка детей. Эквивалентно и более наглядно использовать parentNode.appendChild(newChild)
,
В этом случае вам не нужно проходить циклически, как в представленном вами коде.
ОБНОВЛЕНИЕ:
Попробуйте это с вашим кодом...
var meta = document.createElement('meta');
meta.httpEquiv = "Pragma";
meta.content = "no-cache";
var head = document.getElementsByTagName('head')[0]
head.insertBefore(meta, head.firstChild);
- Сначала создайте метатег как узел.
- Затем захватите тег head как переменную.
- Используя переменную, вставьте узел перед первым потомком.
КОММЕНТАРИИ:
- Проверен функционал в Chrome.
- Протестирован функционал в IE8 с предупреждением консоли: "Код на этой странице отключил обратное и прямое кэширование"