草庐IT

javascript - 深层链接 javascript 支持的网站

coder 2024-02-29 原文

我有一个有两个版本的网站,一个全歌全舞的 javascript 应用程序,当您请求根 url 时提供服务

/

当您浏览这个可爱的网站时,内容会更新,url 也会更新,这要归功于 html5 推送状态或正确格式化的好旧#!网址。但是,如果您没有启用 javascript,您仍然可以使用该站点的所有功能,因为每个内容也存在于它自己的 url 下。这有 3 个原因很棒

  • 非 javascript 用户仍然可以使用该网站
  • SEO - 网络爬虫可以轻松地为网站编制索引
  • 一切都可以在社交网络上分享

第三个原因对我来说非常重要,因为每个内容都必须可以在网站上单独共享。因为每段内容都有自己的 url,所以很容易深层链接到该 url,而且每段内容都可以有自己特定的开放图数据。

但是我遇到的问题如下。你是一个普通人,启用了 javascript,你正在浏览网站上的图片库,并决定分享你发现的一只可爱猫咪的照片。使用 javascript,url 已更新为

/画廊/可爱的猫

您分享了这个网址,您的 friend 点击了它。当他们点击链接时,服务器会向您发送该网站的非 javascript/网络爬虫版本,如果您直接访问该网站的根目录,那么体验将不会像您所获得的 javascript 版本那么好导航到那里。

有没有人有很好的解决方案/替代设置来解决这个问题?我有几个有用的技巧,但是我对它们并不满意。它们包括:

  • javascript 在每个页面上重定向到站点的根目录并存储 cookie/添加 #!到页面上的 url 呈现 javascript 路由器将显示正确的内容。 (谷歌会惩罚自动 javascript 重定向吗?)
  • 呈现无 javascript 页面,并添加一些将用户重定向到根的 javascript,与上面类似,每当用户单击链接时

我不是特别喜欢这两种解决方案中的任何一种,但想不出更好的解决方案。为每个页面呈现整个 javascript 应用程序对我来说似乎不是一个解决方案,因为当您开始浏览网站。

我的解决方案必须支持不实现推送状态的旧浏览器

最佳答案

使“网站的非 javascript/网络爬虫版本”与 JavaScript 版本相同。只需在服务器上构建 HTML 而不是在客户端构建 DOM。

Rendering the entire javascript app for each page doesn't appear to be a solution to me,

这是稳健的方法

as you would end up with bad looking urls such as /gallery/lovely-cat/gallery/another-lovely-cat

仅当您链接(和 pushStateed)到 gallery/another-lovely-cat 而不是 /gallery/another-lovely-cat。 (注意前面的/)。

关于javascript - 深层链接 javascript 支持的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580829/

有关javascript - 深层链接 javascript 支持的网站的更多相关文章

  1. ruby - Ping ruby 网站? - 2

    在Ruby中可以使用哪些替代方法来ping一个ip地址?标准库“ping”库的功能似乎非常有限。我对在这里滚动我自己的代码不感兴趣。有没有好的gem?我应该接受它并忍受它吗?(我在Linux上使用Ruby1.8.6编写代码) 最佳答案 net-ping值得一看。它允许TCPping(如标准ruby​​ping),但也允许UDP、HTTP和ICMPping。ICMPping需要root权限,但其他则不需要。 关于ruby-Pingruby网站?,我们在StackOverflow上找到一个类

  2. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  3. ruby-on-rails - Prawn - 表格单元格内的链接 - 2

    我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c

  4. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  5. ruby - 使用 Watir 检查错误链接 - 2

    我有一个未排序的链接列表,我将其保存在旁边,我想单击每个链接并确保它转到真实页面而不是404、500等。问题是我不知道该怎么做。是否有一些我可以检查的对象会给我http状态代码或任何东西?mylinks=Browser.ul(:id,'my_ul_id').linksmylinks.eachdo|link|link.click#needtocheckfora200statusorsomethinghere!how?Browser.backend 最佳答案 我的回答与铁皮人的想法类似。require'net/http'require'

  6. ruby - 如何为 pbcopy 生成富文本链接 - 2

    我一直在玩一个脚本,它在Chrome中获取选定的文本并在Google中查找它,提供四个最佳选择,然后粘贴相关链接。它以不同的格式粘贴,具体取决于当前在Chrome中打开的页面-DokuWiki打开的DokuWiki格式,普通网站的HTML,我想要我的WordPress所见即所得编辑器的富文本。我尝试使用pbpaste-Preferrtf来查看没有其他样式的富文本链接在粘贴板上的样子,但它仍然输出纯文本。在文本编辑中保存文件并进行试验后,我想出了以下内容text=%q|{\rtf1{\field{\*\fldinst{HYPERLINK"URL"}}{\fldrsltTEXT}}}|te

  7. ruby - 如何使用 readline 支持重新安装 ruby​​? - 2

    我已经按照https://github.com/wayneeseguin/rvm#installation上的说明通过RVM安装了Ruby.有关信息,我有所有文件(readline-5.2.tar.gz、readline-6.2.tar.gz、ruby-1.9.3-p327.tar.bz2、rubygems-1.8.24.tgz、wayneeseguin-rvm-stable.tgz和yaml-0.1.4.tar.gz)在~/.rvm/archives目录中,我不想在任何目录中重新下载它们方式。当我这样做时:sudo/usr/bin/apt-getinstallbuild-essent

  8. ruby-on-rails - 如何从按钮或链接单击的 View 调用 Rails 方法 - 2

    基本上,我试图在用户单击链接(或按钮或某种类型的交互元素)时执行Rails方法。我试着把它放在View中:但这似乎没有用。它最终只是在用户甚至没有点击“添加”链接的情况下调用该函数。我也用link_to试过了,但也没用。我开始认为没有一种干净的方法可以做到这一点。无论如何,感谢您的帮助。附言。我在ApplicationController中定义了该方法,它是一个辅助方法。 最佳答案 View和Controller是相互独立的。为了使链接在Controller内执行函数调用,您需要对应用程序中的端点执行ajax调用。该路由应调用rub

  9. ruby-on-rails - "undefined method ` stub_request '"访问 RSpec 支持文件中的方法时 - 2

    我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re

  10. ruby - Ruby 是否支持逐字字符串? - 2

    Ruby是否支持(找不到更好的词)非转义(逐字)字符串?就像在C#中一样:@"c:\ProgramFiles\"...或者在Tcl中:{c:\ProgramFiles\} 最佳答案 是的,您需要在字符串前加上%前缀,然后是描述其类型的单个字符。你想要的是%q{c:\programfiles\}。镐书很好地涵盖了这一点here,部分是通用分隔输入。 关于ruby-Ruby是否支持逐字字符串?,我们在StackOverflow上找到一个类似的问题: https:/

随机推荐