Скрипт без кэширования без использования 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);
  1. Сначала создайте метатег как узел.
  2. Затем захватите тег head как переменную.
  3. Используя переменную, вставьте узел перед первым потомком.

КОММЕНТАРИИ:

  • Проверен функционал в Chrome.
  • Протестирован функционал в IE8 с предупреждением консоли: "Код на этой странице отключил обратное и прямое кэширование"
Другие вопросы по тегам