首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS w/ noscript

AngularJS w/ noscript
EN

Stack Overflow用户
提问于 2013-10-02 19:16:59
回答 2查看 3.7K关注 0票数 3

我试图创建一个SPA使用AngularJS作为我的网站的主要视图。我在服务器端使用ServiceStack,因此可以根据访问对象的不同,干净地处理HTML或JSON请求。我主要关心的是脚本阻止程序的使用,这使得AngularJS无法正确地呈现页面。到目前为止,我的主要工作方式是呈现静态页面,并注入一个小脚本,如果它检测到Javascript是否启用,就可以重定向到AngularJS支持的页面。这很好,因为当用户从静态页面开始时,每个URL都能很好地工作,但是我遇到了一些障碍。

  1. 浏览到包含"?View=SPA“的链接,如果禁用JavaScript,则会中断页面。
  2. 这将导致加载的第一页加载两次。

我正在寻找一个替代方案,但到目前为止,我还没有找到任何干净的解决方案。我正在考虑将"?View=SPA“作为POST变量,但对于这个实现我仍然不太清楚。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-05-08 15:57:36

与其重定向到另一个页面,我将在相同的HTML文件中实现这两种情况,如下所示:

代码语言:javascript
复制
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <style>.hideIfNoScript {display: none}</style>
  </head>
  <body ng-app ng-init="msg = 'hello world'">
    <input class="hideIfNoScript" ng-model="msg" />
    <p class="hideIfNoScript">{{msg}}</p>
    <noscript>
        <p>Content without javascript</p>
    </noscript>
    <script type="text/javascript">
        var myEl = angular.element( document.querySelectorAll( '.hideIfNoScript' ) );
        myEl.removeClass('hideIfNoScript');
    </script>
  </body>
</html>

head部分中的CSS类hideIfNoScript确保如果禁用javascript,将不会向用户显示该类的所有HTML标记。

noscript标记显示替代内容。

如果启用了javascript,body部分的end上的小脚本将使这些元素可见。在这种情况下,noscript标记的内容是隐藏的。

票数 1
EN

Stack Overflow用户

发布于 2014-09-30 15:45:53

浏览到包含"?View=SPA“的链接,如果禁用JavaScript,则会中断页面。

默认情况下隐藏这些链接:

代码语言:javascript
复制
a[href*='SPA'] { display: none; }

这将导致加载的第一页加载两次。

使用浏览器-检查页上的cookie,它加载iframe中的第一页或重定向到它以避免这种情况。

参考资料

在Google中跟踪非JavaScript访问

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19145041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档