【问题标题】:Make a #-tag javascript link word for non javascript为非 javascript 创建一个 #-tag javascript 链接词
【发布时间】:2011-09-15 10:30:54
【问题描述】:

使用以下教程,我希望我的网站使用 AJAX 加载内容(但也希望能够使用后退按钮等): http://www.queness.com/post/328/a-simple-ajax-driven-website-with-jqueryphp

当然,如果有人禁用了 javascript,该网站也应该可以工作(没有 Ajax)。

然而,当启用 javascript 的用户向未启用 javascript 的用户发送链接时,问题就出现了。因为 javascript 被禁用,它不会正确处理 #-tag 并且只会转到主页(因此直接链接到从 javascript 用户到非 javascript 用户的页面是不可能的)。有没有办法解决这个问题(最好是 php 或 htacces)。

【问题讨论】:

  • 不是您的问题的真正答案,但我通常只是忽略禁用 javascript 的千载难逢的用户的影响。甚至不用担心他们。考虑禁用 javascript 的用户与优化 Netscape Navigator 的代码一样毫无意义。
  • @stereofrog,是的,这就是您编写语义标记的原因。以及基于文本的浏览器和可访问性。
  • 担心实际的人使用没有 javascript 的网络浏览器仍然毫无意义。 (当然是移动的例外,但通常你会为移动改变很多)。
  • 我为一家大型企业客户构建了一个网站的前端。后来他们问我是否可以让它在他们使用的旧黑莓设备上工作。在黑莓使用 Webkit 之前,他们的浏览器在 js 方面是一场灾难。避免为这些设备执行 js 让我成功了 95%。从一开始就在没有 JS 的情况下对网站进行编码确实得到了回报。

标签: php javascript .htaccess hashtag


【解决方案1】:

HTML5 为我们提供了无需刷新页面即可更改 URL 的方法https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries

这意味着您可以在不刷新页面的情况下更新某些内容,但仍然可以为用户提供一个 URL,他们可以将其添加为书签或发送给其他人。只要您在这些位置有页面或使用 mod_rewrite 或类似方法捕获它们,这些 url 将在没有 JavaScript 的情况下工作。

https://github.com/browserstate/history.js 是一个很棒的小 pollyfill,如果浏览器支持它,它将使用 HTML5 历史记录,否则(Internet Explorer)它会更改 url 的哈希值。

【讨论】:

    【解决方案2】:

    基本上,三个步骤:

    • 正常编码你的“a”标签:<a href='about'>About us</a>
    • 在您的javascript代码中,拦截<a>标签上的所有click事件并导航到# + this.href。所以当他们点击上面的 url 时,你导航到 site.com/#about 而不是 site.com/about
    • 在您的 javascript 代码中,有一个计时器函数,该函数从当前位置读取哈希值并通过 ajax 加载相应的 url(删除了 #)

    由于您像往常一样编写 html 代码,因此非 js 用户(更重要的是,搜索引擎的机器人)仍然可以完全访问该网站。

    作为对 cme​​ts 的回应,我可以提出以下建议:

    • 通过javascript将您的主页从site.com重定向到site.com/js/
    • 单击<a href='about'> 时,导航到site.com/js/#about
    • 在“js”页面上,为非 js 用户提供类似 <a id=about href="/about">click here</a> 的内容

    【讨论】:

    • 这并不能解决启用js的用户向非js用户发送链接的问题
    • 我很确定您所描述的已经是他正在做的事情(实际上我 100% 确定,因为我坐在他旁边),问题是将非 js 用户重定向到如果他去site.com/#about 是正确的页面(如果可能的话)。
    【解决方案3】:

    为什么不直接构建您的应用程序,然后在顶部添加 AJAX,而不是反过来为自己增加工作量?

    问问自己,为什么需要 AJAX 页面转换?您的应用是否真的需要它们,还是仅仅因为您在其他网站(如 Twitter)上看到过它?

    【讨论】:

    • 他在他的问题中说该网站也应该在没有 AJAX 的情况下运行,这是他试图添加的额外功能,他正在询问如何使其工作。
    • 我读到他正在创建一个网站并从一开始就想要这个功能,但在我看来,他的做法是错误的,并且过于专注于在 URL 中出现哈希字符.根据定义,带有散列的 URL 是片段标识符;也就是说,对于页面的片段,而不是单个页面本身。
    猜你喜欢
    • 1970-01-01
    • 2019-11-07
    • 2023-04-06
    • 2023-03-28
    • 2017-10-11
    • 2011-06-13
    • 1970-01-01
    • 2012-11-05
    • 2013-10-08
    相关资源
    最近更新 更多