[解决]
我通常在没有javascript的情况下构建页面,然后才添加javascipt功能。这样,我可以使用需要javascript with display:none的工具设置所有div,然后在javascript的第一行中将其设置为可见:
<script type="text/javascript">
$(document).ready(function(){
$('#jsdivs').show();
});
</script>
这样做可以让那些因任何原因无法停用浏览器javascript的用户使用。
遵循这种精神,我想找到一种默认情况下不加载任何javascript的方法,然后,如果启用了javascript,则会有加载javascript文件的说明。
现在我正在加载这样的JQuery(出于缓存原因,很多人可能已经缓存了这个):
<script src="http://code.jquery.com/jquery-1.4.4.js"></script>
另一个文件与所有其他JavaScript最小化。最后,就在HTML正文标记之前。
我看到很多意见here和here,但没有一个可以帮助我解决这个问题。首先,我想知道这是否是完成这项工作的好方法。非常感谢。
更新
@Lèse majesté告诉我一个陈旧的讨论browsers do not load javascript files when it is disabled。由于我认为信息没有足够的结论,我做了一些测试,通过插件“Web Developer”在Firefox中禁用javascript,而YSlow(Firebug的另一个FF插件)继续显示所有的javascript信息,没有提到“Live Headers”(另一个实时显示标题的梦幻般的FF插件)也显示请求中存在_utmc cookie(由Google Analytics脚本提供)。
@Marcel Korpel做了一个非常好的(虽然看起来很轻松)评论,这为真正的解决方案开辟了道路。他说Google Analytics使用“动态包含ga.js的方法”。需要使用结束标记(并立即打开标记)让浏览器更新DOM树并实际加载并执行添加的脚本。“
< / LI>有关his indication的信息,我可以提出这个PHP代码(我必须将PHP代码放在Pastie.org中,因为Stackoverflow正在搞乱它):
打印:
<script language="javascript" type="text/javascript">
document.write('\<script src\="js\/minified\.js" type\="text\/javascript"\>\<\/script\>');
</script>
这次YSlow和Live Headers没有说任何javascript文件。
答案 0 :(得分:3)
如果禁用JavaScript,大多数浏览器都不会下载链接的.js
文件。看到这个问题:
Does a browser download JS files if the user has JS disabled?
答案 1 :(得分:2)
你可以动态添加javascript文件,但是内容将不会被评估,也不会被你用(因为javascript被加载并解析一次),所以这种方法不起作用可以看出here
如果您能够在查询字符串参数,表单字段或任何您喜欢的任何内容上将此信息(禁用javascript)传递回服务器,您还可以使用服务器端脚本并避免写出脚本标记。
但是,请考虑所涉及的复杂性以及这是否可以为您节省任何费用。
说实话,我不知道如果javascript关闭,浏览器对这些文件的行为如何 - 假设(尽管应该总是检查)是合理的,如果javascript关闭,则不会请求javascript文件任击>
更新
可以看到here,如果禁用了javascript,大多数浏览器都不会下载js文件。