也许这是一个愚蠢的问题,但我对JavaScript非常困惑。我使用尽可能不引人注目的JavaScript来遵循这个代码组织。我用RubyonRails建立了一个使用谷歌地图的网站。
我的场景:假设我有一个非常巨大的网站,在不同的页面上,我需要启动JavaScript脚本来执行一些操作。
一个问题是,无论用户访问哪个页面,我都必须将我网站的所有JavaScript代码添加到用户的浏览器中。例如,假设我有一个页面A,它使用了大量的JavaScript代码,而页面B使用了一些微小的JavaScript代码。据我所知,在页面B中,用户必须检索所有JavaScript代码(即,对于页面A和B)。这不是有点不切实际吗?
此外,对于这两个页面,JavaScript都是由document.addEventListener("DOMContentLoaded", function, false);
函数启动的。然而,页面A的函数假设有一个名为"pageA"的div(它用作引用,以便通过js脚本修改它或添加元素),类似地,页面B的函数假定有一个名称为"pageB"的div。因此,当我在页面B上时,我收到js错误,即没有"页面A"的元素。我该如何避免这种情况?
事实上,对于每一个页面,我都必须向用户加载我的整个JavaScript代码(即所有页面),我如何在没有任何此类错误的情况下启动(即在页面加载时立即启动,而不是在用户事件发生后启动)页面特定的JavaScript代码?我真的很困惑!
Wooho反应非常快thanx伙计们!但我从未说过我将整个js代码写在一个文件中。相反,我使用RoR的组织!(btw将所有文件合并为一个文件)。为了澄清我的问题,我在不同的文件中启动页面A的事件和页面B(或C等)的事件。一旦DOMContentLoaded事件发生,代码就会立即启动。但是,当用户在页面B上时,我不想触发页面A的事件。或者类似地,我只想为页面B加载js(这样就不会触发页面A的事件)。我该怎么做?
附言:如果你认为一个更好的标题,请随意推荐!
如果您将Javascript代码保存在一个文件中,当用户请求访问您网站的第一页时,它只需要加载一次(甚至可能编译一次,请参阅此)。然后浏览器将使用缓存副本,除非您不允许缓存(web服务器的错误配置可能会导致这种情况)。
当你做类似(JQuery)的事情时:
$('#nosuchid').something();
或例如
$('.nosuchclass').each(function(i, el) { ... });
如果标记中不存在匹配元素,则不会出现错误,也不会产生任何效果。如果您使用document.getElementById()
,那么如果没有元素匹配,它将返回null
,您将不得不处理这种情况。如果你做得好,就不会有任何错误。
正如您可以想象的那样,跳过的代码执行起来不需要时间,因此也没有理由期望出现性能问题。