不使用 Jquery 的无缓存脚本

no-cache script without using Jquery

您好,我正在尝试创建一个脚本,该脚本会在任何网页中插入一个 元标记以强制无缓存

目前这是我的代码,我不想使用 Jquery(如 Script to force IE8 cache behaviour 所示)。

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;
}

我会在没有 JQuery 的情况下使用 ... 前置:

parent.insertBefore(child, parent.firstChild);

parentNode.insertBefore(newChild, refChild);

将节点 newChild 作为 parentNode 的 child 插入现有 child 节点 refChild 之前。 (Returns newChild.)

如果refChild为空,则在children的列表末尾添加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. 使用变量,在第一个child之前插入节点。

评论

  • 已在 Chrome.
  • 中测试功能
  • 已在 IE8 中测试功能并带有控制台警告:"The code on this page disabled back and forward caching"