问题标签 [progressive-enhancement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 检测对给定 JavaScript 事件的支持?
我有兴趣使用 JavaScript hashchange 事件来监控 URL 片段标识符的变化。我知道真正简单的历史和为此的 jQuery 插件。但是,我得出的结论是,在我的特定项目中,增加另一个 JS 文件的开销并不值得。
我想做的是走“渐进式增强”路线。也就是说,我想测试访问者的浏览器是否支持 hashchange 事件,并编写我的代码以使用它(如果它可用),作为增强而不是核心功能。IE 8、Firefox 3.6 和 Chrome 4.1.249 都支持它,这约占我网站流量的 20%。
那么,呃……有什么方法可以测试浏览器是否支持特定事件?
javascript - 基于类的 Javascript 注入有什么缺点吗?
我越来越多地看到的一种现象是 Javascript 代码与特定页面上的特定元素相关联,而不是与各种元素或 UI 模式相关联。
例如,假设我们在一个页面上有几个动画菜单:
这两个菜单可能存在于同一页面或不同页面上,并且某些页面可能没有任何菜单。
我经常会看到这样的 Javascript 代码(对于这些示例,我使用的是 jQuery):
注意到问题了吗?
Javascript 与 UI 模式的特定实例而不是 UI 模式本身紧密耦合。
现在这样做不是更简单(更清洁)吗?-
然后我们可以将“下拉菜单”类放在我们的列表中,如下所示:
这种做事方式将有以下好处:
- 更简单的 Javascript - 我们只需要在类上附加一次。
- 我们避免寻找给定页面上可能不存在的特定实例。
- 如果我们删除一个元素,我们不需要通过 Javascript 寻找该元素的附加代码。
我相信 alistpart.com 上的某些文章开创了类似的技术。
我很惊讶这些简单的技术仍然没有得到广泛采用,而且我仍然看到“最佳实践”代码示例和 Javascript 框架直接引用 UI 实例而不是 UI 模式。
这有什么原因吗?我刚才描述的技术是否有一些我不知道的大缺点?
html - 使用 Ext JS 或类似工具时如何进行渐进增强?
它是否需要为应用程序开发两个几乎独立的前端,一个使用 Ext JS,另一个根本没有 JS?
javascript - 实际上,渐进增强和优雅降级是一回事吗?
渐进增强和优雅降级基本上是一回事吗?
flash - 使用 JSP 确定 Flash 可用性
基本上,如果用户安装了 JSP 表单,我需要用 Flash 表单交换它。我知道有一个 JavaScript 选项,但不想使用它,因为它会阻止那些拥有 Flash 但没有 JavaScript 的人。
在网上找不到任何东西,我相信它不会太难,有什么想法吗?如果可能的话,一些代码会很有趣:)
dry - 通过渐进增强保持干燥
我正在使用非常少量的 Javascript 构建一个网站,只是为了向页面添加内容(如联系表格),而无需转到新页面。
我知道无论如何我都应该建立联系页面(以防万一用户没有打开 javascript),然后如果他们有 javascript 就使用它。
那么如果我不想在两个地方存放表单的 HTML,我应该在哪里存储它呢?
(通常我不是那么挑剔,但我对这个很好奇。)
javascript - 渐进增强是否已成为当前问题?
我听到了几件事来捍卫渐进增强。
Javascript 已关闭或不可用。根据W3School 的 Javascript 统计,95% 的人在 2008 年 1 月(2.5 年前)启用了 Javascript。根据这些统计数据,趋势似乎是启用 Javascript 的浏览器正在上升。大量采用 AJAX 可能促使用户更快地启用。从业务角度来看,支持纯文本或可访问性没有多大意义,因为它们可能占不到 1% 的流量。
移动浏览器将无法工作。由于屏幕尺寸有限和移动设备上的浏览体验完全不同,我会以任何一种方式创建网站的移动版本。有人可能会争辩为屏幕阅读器/移动设备使用不同的 CSS,但是无论你让它看起来多么整洁,你都无法在移动设备上收集尽可能多的信息。
最初的说法甚至不适用于新一代移动设备,例如 Android 和 iPhone,它们的每日总激活率总计超过 200,000。此外,大多数 Javascript 吸引眼球的东西(如 jQuery UI)并没有多大意义,因为移动设备上的网站体验是如此不同(没有鼠标悬停等)。我认为移动设备是他们自己的平台,需要定制版本的网站。另一个趋势是创建网站/服务的“本地应用程序”版本。
蜘蛛将无法爬行。这也不是真的。可以将 DOM 用作 Javascript 的数据容器(使用您的实体填充 div/input 标签)。此外,Google 还努力使AJAX 网站可抓取。
类似主题:
有趣的链接:
jquery - jquery - 渐进增强和 ajax
所以现在,我有一些表单,当一个表单被提交时,它会以模式检索另一个表单。所以现在,我可能有一个指向 example.com/modal/1 的链接,它打开了第一个模式。但是,如果未启用 javascript(因此浏览器实际上会跟随链接),则会显示一些 html(将要检索的 html。)。我希望能够对此进行样式设置,所以我猜我应该使用样式表和所有内容制作一个完整的 html 页面,但这就是我想知道的:
使用 jquery's load()
,我知道您可以选择一个元素 id '#form'
,它会解析请求返回的内容,然后只使用 #form 元素。我希望能够使用类似的东西,但我正在使用该post()
功能。
关于如何做到这一点的想法?
javascript - 渐进增强和初始显示状态
我有一个具体的例子,但我也在寻找一般的答案。如果启用了 JavaScript,我希望最初隐藏的页面元素。
例子:
- 切换表单的一部分
- 选择框“跳转表单”的提交按钮
当页面加载后隐藏元素时,我试图避免“内容闪烁”。
解决方案
为了后代,我将完整的解决方案放在这里。
节中调用的 JavaScript 文件<head>
:document.documentElement.className = 'js';
允许最初隐藏或显示元素的样式:
html - 为无脚本场景提供默认 CSS 样式(被 jQuery UI 覆盖)的最佳方式是什么?
例如:我的<< 1 2 3 4 5 6 7 8 >>
页面中有一个寻呼机,其中每个导航元素都是一个普通的 Html 链接。对于启用 JS 的现代浏览器,我想用jQuery 的 .button()美化它们。但我想为 NoScript 场景提供一些东西。显然我应该为链接添加一些 CSS 样式,但是我怎么知道自定义 CSS 不会破坏 jQuery 的样式?
这是不必要的担心吗?jQuery 是否提供了一些功能来清除元素以前的样式?