2009-11-30 30 views
1

我现在正在问自己,当页面的页头中的javascripts被执行?何时执行JavaScript?

所有内容加载后?在加载图像期间?加载网站之前?

原因是,我想实施一个屏障来阻止用户访问没有javascript的网站(这是为了公司内部的使用,不要责怪我的要求) - 我的想法是创建一个div错误消息,用javascript隐藏,我的页面屏幕截图呈灰色,如果javascript被禁用,也会隐藏。

问题是,这样的截图在文件大小方面可能相当大。所以,连接速度很慢,你需要在JavaScript隐藏之前加载整个图像吗?!

回答

2

<script>标签执行(除非他们有defer属性集),也就是图像之前,文档甚至其余的都被加载。你可能想要做的是包含你希望隐藏在<div id="something" style="display:none">中的图像,并在页面及其所有内容(包括截图图像)已加载(即在onload处理程序中)或显然可以也使用addEventListener)。

HTH!

+0

第一个答案真的回答了执行时的问题;-)所以,回顾一下;如果我将标题中的JS重定向,它将在背景图像加载之前执行?所以这是我的问题的解决方案,只有一个重定向,如果它不起作用,页面将加载图像。 – 2009-11-30 09:58:03

+0

是的。重定向(location.href ='...';)将立即执行。 – AKX 2009-11-30 18:20:49

4

为什么不直接在<noscript>标记中加入“您必须有javascript”警告?

+0

因为这并不妨碍用户使用该网站,无论如何,这是我需要做的。它必须是(至少不用编辑CSS)不可能在没有JS的情况下使用该站点... – 2009-11-30 09:46:21

+0

无脚本不一定遵循脚本元素,因此您可以将JS放在头部并仍然在脚本中包含无脚本元素。 – Boldewyn 2009-11-30 09:48:47

+0

'

1

Javascript将取决于您使用的是什么事件;如果您正在讨论onload事件,那么它会在所有内容加载后运行。

要处理您的问题,您可以创建一个页面,然后在那里编写一些javascript以将其重定向到JavascriptEnabled.html;如果你不能重定向它,你还应该添加一个META REFRESH标签并将其重定向到JavascriptDisabled.html并显示一条警告消息。因为它们是加载HTML页面的<head>

+0

好点,好主意!我一定会研究这一点。 – 2009-11-30 09:56:48

2

只要浏览器看到它,就会执行Javascript中的script标记。但是停止所有其他执行和(可能)下载。因此,您试图隐藏body中的img,但由于script标记位于head中,所以它将在img加载之前执行,因此它将无法找到它(document.getElementById('#noScriptImage')将失败)。

另一种选择是将script标签放置img后,但随后有变化,对于几分之一秒的图像将是可见的,屏幕轻弹。

+0

非常好理解,现在事情变得更加清晰。 – 2009-11-30 09:59:11