2009-11-03 31 views
7

我想将用户重定向到某个页面,如果他/她禁用了JavaScript。我想这样的代码:<noscript>重定向

<noscript><?php url::redirect('controller/method'); ?></noscript> 
// url::redirect is much like the location header 

无济于事......

我该怎么办呢?

+0

这是一个非常糟糕的方法来处理非JS客户端:http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin 2009-11-03 07:13:55

+0

可能重复[No-Javascript检测脚本+重定向](http ://stackoverflow.com/questions/9895012/no-javascript-detection-script-redirect) – BalusC 2016-06-11 09:03:45

回答

2

您不能使用元刷新标签,然后使用Javascript将其删除,因为浏览器设置为在读取元刷新标签时重定向,而且JS对其进行操作已为时过晚。

唯一的办法是要么做什么丹尼尔建议,或显示一个链接时,有没有使用Javascript:

<noscript> 
<a href="">Click here to continue</a> 
</noscript> 

或者你可以尝试优雅地失败:Do you plan for javascript being off?

+0

您不需要使用JS来操作''标签......如果包含在'

5

如果javascript被禁用,没有办法做重定向。为什么不做相反的 - 如果启用javascript的话会重定向?

<script> 
    window.location = "..."; 
</script> 
+0

我想阻止浏览一个页面没有JavaScript ...有关如何做到这一点的任何想法? – yretuta 2009-11-03 03:44:07

+1

您可以使用AJAX加载页面内容。问题:你为什么要这么做? – 2009-11-03 03:45:14

+0

,因为页面是JavaScript相关的,有点像添加谷歌地图到数据库 – yretuta 2009-11-03 03:51:31

19

由于头部已经发送,您需要使用标准的HTML标记:

<noscript> 
    <meta http-equiv="refresh" content="0;url=noscript.html"> 
</noscript> 

尝试这两个Firefox和IE浏览器似乎运作良好...启用JavaScript中, <meta>标签被忽略。当它被禁用时,浏览器重定向到noscript.html

+0

这不是一个全部解决方案。 – 2009-11-03 03:45:46

+2

你能解释一下吗? – jheddings 2009-11-03 03:49:21

+0

尽管它起作用,验证者讨厌这一点。 noscript不能出现在head元素中,meta不能出现在body元素中。 meta不能出现在noscript元素中。 XHTML 1.0和HTML 4.0。 – mauris 2009-11-03 04:03:18

0

添加以此为在你的身体第一个元素,风格也适合,也许提供它的内部链接到无脚本页面:

<div onload="return false;"> 
    <!-- PAGE CONTENTS --> 
</div><noscript>JAVASCRIPT IS REQUIRED TO VIEW THIS PAGE</noscript> 

我用的这个更详细的方法(即basicall y使它看起来像一个模式对话框,而且都很漂亮)在客户端不允许我使用更多兼容手段的页面上。我已经在IE6 +和所有其他主流浏览器上进行过测试,并取得了巨大成功。