Ant*_*ony 21 html javascript xhtml noscript
所以我想一个简单的方法来处理浏览器禁用的javascript将如下:
<head>
<title>JavaScript Test</title>
<noscript>
<meta http-equiv="Refresh"
content="1;url=nojs.html" />
</noscript>
</head>
Run Code Online (Sandbox Code Playgroud)
并且具有nojs.html
有类似:
<p>Return to <a href="jstest.html">test</a> after enabling javascrpt.</p>
Run Code Online (Sandbox Code Playgroud)
在崩溃页面.
这不是我首选的方法,但它很好很简单,直到可以为没有javascript的用户设计出更优雅的东西.
但是,<noscript>
在该head
部分中放置一个元素是无效的.当然,初步测试仍然有效,但是当我的代码有效时,我很迷信,而且我讨厌实际上无法进行现场测试.
那么有一种有效的方法吗?也许包装noscript
在另一个元素中,就像对象标签一样?或者更简单的一些我没想到的方式?
Dou*_*ner 24
我不确定为什么你需要重定向到另一个页面而不是只显示一条消息.我使用JS和一点CSS来处理这些情况.像这样的东西:
<head>
....
<script type="text/javascript"> document.documentElement.className += " js"</script>
<link rel="stylesheet" type='text/css' href="css/layout.css" media="all" />
</head>
<body>
<div id="noscript">Please enable JavaScript, then refresh this page. JavaScript is required on this site</div>
<div id="wrapper">
...
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
然后在layout.css
:
#wrapper { display: none } /* Hide if JS disabled */
.js #wrapper { display: block } /* Show if JS enabled */
.js #noscript { display: none } /* Hide if JS enabled */
Run Code Online (Sandbox Code Playgroud)
通过这种方式,在呈现页面之前将类应用于html
元素,这样就不会因为替换JS内容的非JS内容而获得闪烁.
Doug的解决方案相当不错,但它有一些缺点:
.js #wrapper { display: block }
").使用相同方法的更简单,更有效和灵活的解决方案可以是:
<html>
<head>
<!-- put this in a separate stylesheet -->
<style type="text/css">
.jsOff .jsOnly{
display:none;
}
</style>
</head>
<body class="jsOff">
<script type="text/javascript">
document.body.className = document.body.className.replace('jsOff ','');
</script>
<noscript><p>Please enable JavaScript and then refresh the page.</p></noscript>
<p class="jsOnly">I am only shown if JS is enabled</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有了它,它是有效的html(html元素上没有类属性).它更简单(更少的CSS).它很灵活.只需将"jsOnly"类添加到您希望仅在启用JS时显示的任何元素.
归档时间: |
|
查看次数: |
13868 次 |
最近记录: |