1

您好我正在尝试创建一个脚本,该脚本将元标记插入任何网页以强制 no-cache

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

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

1 回答 1

1

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

parent.insertBefore(child, parent.firstChild);

parentNode.insertBefore(newChild, refChild);

newChild将节点作为parentNode现有子节点之前的子节点插入refChild。(返回newChild。)

如果refChild为 null,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 中测试功能并带有控制台警告:“此页面上的代码禁用了前后缓存”
于 2015-01-01T15:47:41.253 回答