javascript - Progressive enhancement 和 Graceful degradation 例子,我不明白

标签 javascript progressive-enhancement graceful-degradation

我已经阅读了这两种不同的设计方法,我了解 Prog.Enhancement 和 Graceful Degradation 之间的理论差异,但是我没有得到您可以在以下链接中阅读的示例: Progressive enhancement and Graceful degradation example

他与 G.D. 创建了一个链接,通过 Javascript 打印页面。 与体育做同样的事情,但他使用“按钮”而不是“链接”。

这是与 P.E. 一起使用的代码。过程:

    <p id="printthis">Thank you for your order. Please print this page for your records.</p>
<script type="text/javascript">
(function(){
  if(document.getElementById){
    var pt = document.getElementById('printthis');
    if(pt && typeof window.print === 'function'){
      var but = document.createElement('input');
      but.setAttribute('type','button');
      but.setAttribute('value','Print this now');
      but.onclick = function(){
        window.print();
      };
      pt.appendChild(but);
    }
  }
})();
</script>

他不能继续使用链接做同样的事情吗? 我的意思是即使在 P.E 中,Javascript 支持的问题仍然存在。并且完全像 G.D. 一样解决,告诉用户自己打印页面。

提前致谢

最佳答案

没有。在此示例中,没有链接。只是一个<p> .放入正常 <a>将意味着任何禁用 JS 的人和任何浏览器无法执行的人 window.print()将看到一个不执行任何操作或去任何地方的链接(如果浏览器足够旧,可能会抛出一个错误框)。 UI 会明显损坏。要以另一种方式增强页面,作者可以更改 <p><a> , 但他选择了 <input type="button"> .有很多选择。

但是这个例子的重点是从一个对任何人都没有任何破坏的 UI 开始——包括禁用 JS 的用户和没有所需功能的浏览器——然后构建。这就是PE的意义所在。另一方面,GD 方法是为您的主要受众构建页面并找到隐藏错误内容的方法,因此较少的浏览器仍然可以得到一些不错的东西,而不会在整个地方看到很多错误的东西。

我知道你没有问过,但根据我个人的经验,PE 和 GD 之间的区别完全是人为的,非常 2009。其中很多与 IE6(不会死的 2001 浏览器)有关,但是移动给了它新的紧迫感。

当时移动设备被许多人视为需要特殊对待的独立系统,因此这是一个重要的问题:您是否为移动设备和桌面设备构建,然后为您的核心桌面设备用户添加功能?或者您是否为您的核心桌面用户构建网站,然后削减可能在移动设备上损坏的内容。

关于javascript - Progressive enhancement 和 Graceful degradation 例子,我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240167/

相关文章:

javascript - 将 append 的相关元素保留在正文中

three.js - Threejs 基准测试和渐进增强

image - 具有优雅降级的响应式透明 CSS 图像标题?

javascript - 在没有 JavaScript 的情况下突出显示 CSS 中的事件面板

javascript - 如何在 Javascript 不可用时显示内容,在 javascript 可用时隐藏它并且在任何一种情况下都不闪烁?

css - 如何优雅地降级 CSS 视口(viewport)单元?

javascript - 我无法在 Windows 中从 Filezilla 打开 JS 文件

javascript - jstree : Uncaught TypeError: Cannot read property 'children' of undefined

javascript - material-ui react.js 中带有评级值的错误

javascript - 绕过 Javascript 表单处理程序