不要太担心页面加载时间。
这只是衡量内容停止下载需要多长时间的衡量标准,而不是衡量一个人能够使用该网站需要多长时间的衡量标准。
令人担忧的是,页面加载何时会阻止使用页面(或查看页面)的能力 - 例如,如果您在页面顶部加载所有 JS,在加载 CSS 之前。
就个人而言,我认为您的格式很好,但看起来您正在做很多id
-assignment 和 jQuery手动监听,这是一件可怕的事情。
为什么不做类似使用 html5data-set
属性的事情呢?
<a data-linkType="JS-Override" data-methodName="doSomethingInternally">link</a>
然后,您可以从您的程序中调用dataset
该元素。
var anchors = document.getElementsByTagName("a");
[].forEach.call(anchors, function(anchor) {
if (anchor.dataset.linkType !== "JS-Override") { return; }
var extension = anchor.dataset.methodName;
anchor.addEventListener("...", function () { setHash(extension); }, false);
});
这是一个非常微不足道的例子,但它确实有效。目前对数据集的支持很好。为了让它在包括旧 IE 在内的所有浏览器上工作,它需要被包装在一个简单的 API 中(新浏览器从数据集中读取,旧浏览器需要通过它们的属性列表来读取“data-XXX”属性——jQuery 包装了这个进入.data();
And of course, you might have a lot of anchors on your page, and only a handful of them are going to do the thing that you're looking for right now... ...so the trick there would be to grab them by a class that you give them, so that you aren't sorting by every a
on the page.
...or, alternatively, if you know that each a
which is a special internal page, is contained within a menu div, or a settings div or whatever, then just grab those ones:
var menu = document.getElementById("myMenu"),
jsLinks = menu.getElementsByTagName("a");
[].forEach.call(jsLinks, function (anchor) { /* everything mentioned before */ });