请教,如何用js真正清空一个网页的所有内容(不仅是dom)

情景是这样的,有n个网页,我可能随时会用到,于是就一直开着,最近发现这几个网页的内存占用越来越高,电脑内存不够用了,开始卡顿,这时我就去任务管理器里把那几个占几百mb的网页给结束掉。要用到时我在到那个崩掉的页面刷新一下页面就好。

这样做有效果是因为这几个网页刷新重开后内存占用是不高的,打开的时间越长,内存占用就越高,我又不想直接把页面关了,每次要用时都去收藏夹里面找,因为经常用到。每次都去任务管理器里点结束也不是办法,于是我决定直接把页面内容清空.

研究了怎么往 网页中注入js ,我注入了这样的js: $("html").html("<head></head><body></body");,这样是有效果的,页面可见内容全部被清空,内存占用也降下来了。但并没有清干净,页面已执行的js代码仍在执行,还在定时发起http请求,控制台依然在不断的打印消息,各种报错。

在不直接把网页关掉的情况下,通过注入js的办法能把页面已执行的js的定时任务也清空吗?

试试用重新加载一个空网页

试试onetab?虽然不是用js清空网页内容,但是感觉可以满足你的需求。

你说的有道理,可以直接跳到另一个页面,在新页面可以保留原页面的标题,页面小图标icon,url等方便找到。把注入的js改成了这样

  var icon=encodeURI($("link[rel=icon]").attr("href"));
  var title=$("title").text();
  var url="http://localhost/htm-ready.php?icon="+icon+"&title="+title;
  window.location.href=url+"&url="+encodeURI(window.location.href);

这个htm-ready.php页面也非常简单,我也一并发出来

<?php
echo "<html><head><title>"[email protected]$_GET["title"]."</title>";
echo '<link rel="icon" href="'[email protected]$_GET["icon"].'"/></head><body>';
echo "<h1>按space重载</h1><h2>"[email protected]$_GET["url"]."</h2></body></html>";
?>
<script src="/jquery3.6.js"></script>
<script>
  $("body").keyup(function(e){
    e=window.event||e;
    if(e.which==32){
      window.location.href=$("h2").text();
    }
  });
</script>

产生的问题是在新页面不能按f5刷新,但本来也是空页面,我可以设成按 space 就跳回原页面,更加好按。

这样保留了原网页的部分内容,又清理得干干净净

up:我上面的代码又犯了直接把url打印出来的 严重错误 ,大家一定要小心

url带够参数,f5刷新应该也没问题

Edge 设置里面有自带的睡眠标签页,我一般设为 30 秒未活动自动休眠。 不知道 Chrome Firefox 里面有没有类似的功能。

这个我试用了一下,设为30s,几分钟后回来看好像没什么效果,这个休眠应该只是页面不活动或降低cpu占用,而与释放网页内存占用没什么关系

1 个赞

https://www.appinn.com/tab-wrangler/

Firefox 也有 Tab Discard 功能,并且有插件可以自定义,我个人体验是一个 Tab 刚被 discard 时内存并不会马上释放,需要过一段时间。

(帖子已被作者删除)

参数全部带够只用估计url长度会出问题,现在改成了先用长度无限制的 post 把新页面需要的参数发过去,然后在做页面跳转。

$.post("http://localhost/htm-ready.php,{
  //很多很多参数
},function(){
    window.location.href="http://localhost/htm-ready.php?url="+url_y;
});

感觉如果这样继续下去我可以直接用js截取一个页面快照了,传到新页面显示