1

我有一个用于运输选项的简单表单,当有人从下拉列表中选择新选项时,我正在使用 javascript 自动提交表单。

为了支持没有 javascript 的浏览器,还有一个提交表单的按钮。此按钮使用 javascript 隐藏。

但是,这意味着我的按钮在短时间内可见,并且在重新格式化其余内容时可能会导致闪烁。

任何人都可以建议一种创建按钮的方法,以便它开始隐藏,但只有在 javascript 不可用时才可见?例如,从 display:none 开始;并神奇地更改为 display:block; 当且仅当没有 javascript。

4

5 回答 5

13

只需将任何内容放入<noscript> ... </noscript>标签中,然后它只会在 JavaScript 未启用/可用时出现。

于 2009-06-17T12:49:05.217 回答
4

这取决于您如何隐藏它,您是使用准备好的 DOM 还是准备好窗口?窗口就绪等待所有图像下载,这通常太长了。

出于可访问性的原因,我会将其隐藏在加载的 DOM 上。但是为了确保它不会出现,你可以把它放在一个 noscript 元素中

<noscript>
    <input type="submit" />
</noscript>

至于你的最后一段,在没有 JavaScript 的情况下不会发生这样的事情。

于 2009-06-17T12:50:13.657 回答
1

只需编写不显眼的 javascript:http: //icant.co.uk/articles/seven-rules-of-unobtrusive-javascript/

您所做的是将您的页面编写为普通页面,但是,然后使用底部的代码启动 javascript,并开始编辑页面以使其更具交互性。这样做的好处是,如果他们关闭了 javascript 页面是正常的,但是,如果他们打开了它,那么您可以优雅地添加更多功能。

我不是该选项的忠实拥护者,因为这可能意味着需要下载大量不需要的额外代码。

在此页面上,请查看评论 5,以获得能够在实际显示任何内容之前进行更改的良好解决方案:http: //dean.edwards.name/weblog/2006/06/again/

于 2009-06-17T13:15:59.937 回答
0

您可以在提交按钮之前和之后使用脚本来编写隐藏的 div 元素开始和结束标记。

于 2009-06-17T12:56:53.767 回答
0

一种选择是从显示的按钮开始,然后从 JavaScript 修改其 CSS:

<head>
    ...
    <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8">
    <script>
        document.styleSheets[0].addRule(".hideMe", "display:none");
    </script>
    ...
</head>

修改样式表而不是按钮(并将此代码放在onload 之外)可确保在绘制按钮之前将其隐藏。

于 2009-06-17T22:43:27.573 回答