如何处理AngularJS中禁用JavaScript的情况

34

AngularJS依赖于JavaScript启用。这意味着,如果有人访问使用AngularJS构建的应用程序或网站,它将无法正确渲染。

在使用AngularJS时,处理禁用JavaScript的访问者的常见约定是什么?

请解释为什么会出现这种情况?

问题包括处理angular JS指令和{{data_bindings}}的情况。以便在页面无法渲染时不显示数据。


2
“最好”的方式很大程度上取决于网站的目的和受众。” - Pointy
我已经更新了问题,以更符合我正在寻找的答案。 - BrightIntelDusk
2个回答

36
在考虑了此问题的其他答案和"如何检测JavaScript是否已被禁用?"以及对AngularJS的进一步研究后,首先您需要隐藏通过数据绑定显示的所有变量。这可以使用ng-cloak来完成,它将添加到HTML标记中。
<div ng-cloak>
    <!-- page content here -->
    {{bound_data}}
</div>

它还包括一个 CSS 标签来隐藏该元素。

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
    display: none !important;
}

当用户的JavaScript被阻止或禁用时,您将需要显示替代内容。这可以使用

<noscript>
    You must have JavaScript enabled to use this app.
</noscript>

您可以选择创建一个功能和特性减少的应用程序,或者要求访问者必须启用JavaScript才能完全使用您的应用程序。


13

3
还可以在<noscript>块中放置<meta>重定向标记,这样您就可以在需要时在服务器上进行一些工作,以准备适当的消息。 - Pointy
渲染后所有Angular标签怎么办?我感觉你没有掌握解决方案的更多信息。 - BrightIntelDusk
1
@IntegrityFirst 嗯,这是AngularJS。它需要JS。没有绕过这个的办法。 - George Stocker
我相信这是肯定存在的。 - BrightIntelDusk
2
@IntegrityFirst,如果JavaScript已启用,则您的着陆页可以重定向到Angular页面,否则显示消息。 - Mark Bolusmjak
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接