哪些javascript文件未在页面加载时使用

时间:2010-06-23 08:26:46

标签: javascript pageload

是否有可能找出哪些javascript文件未在网页上使用而无需添加控制台日志或调试或删除它们以查看是否有问题?

我正在寻找一个工具,或命令行脚本或firefox插件等。

例如,假设我将这些包含在标题中:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/functions.js"></script>
<script type="text/javascript" src="js/validation.js"></script>
<script type="text/javascript" src="js/something.js"></script>

在页面上,只会调用functions.jsvalidation.jsjquery.js中的功能。我如何知道something.js未被使用,因此可以安全地从标题中删除?

我已经尝试过像FireBug,chrome的控制台,yslow和服务器日志这样的东西,但这些都告诉我哪些脚本已经加载,即所有脚本,而不是已经使用过哪些脚本。

4 个答案:

答案 0 :(得分:3)

AFAIK没有简单的“这个文件正在使用/未使用”的检测机制,因为有很多方法可以在JavaScript中调用,扩展和引用。

有许多方法可以调用函数,例如在元素的click事件中,eval()语句......您可以在脚本文件中扩展现有类的原型......等等。另外,您可以通过AJAX获取新标记反过来引用某个包含的函数,不能在不获取内容的情况下自动测试。

除非有人提出一个解决这个问题的工具(我不是说这是不可能的,只是它非常难)我会说用一个好的IDE和搜索功能手动完成这个是最好的方法去吧。

答案 1 :(得分:1)

为了回答7年后我自己提出的问题,Chrome开发工具现在拥有这个功能! https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage

答案 2 :(得分:1)

仅耗时7年:)还想指出您可以使用Navalia自动执行此操作:https://github.com/joelgriffith/navalia

这是一个简单的例子:

import { Chrome } from 'navalia';
const chrome = new Chrome();

async function checkCoverage() {
  await chrome.goto('http://joelgriffith.net/', { coverage: true });
  const stats = await chrome.coverage('http://joelgriffith.net/main.bundle.js');
  console.log(stats); // Prints { total: 45913, unused: 5572, percentUnused: 0.12135996340905626 }
  chrome.done();
}

checkCoverage();

更多https://joelgriffith.github.io/navalia/Chrome/coverage/

答案 3 :(得分:0)

从不同的方向来看,您可以考虑使用(懒惰)加载JavaScript库。我不能说这对你的情况有多合适,但我在上周看到过这两个,但没有使用过这两个: