如何为网络爬虫和单页应用程序用户制作网站
How do you make website for both web crawlers and single page application users?
我将非常具体。
我有一个前端。。。http://www.eroticahub.site(非色情)
如果你有javascript,它就会变成。。。http://www.eroticahub.site/#!body=home[使用jquery/ajax-load渲染]
如果您没有javascript,它仍然。。。http://www.eroticahub.site/
然后你点击底部的"隐私"。
如果您有javascript,它会将文件/body/privacy.html加载到主div中,然后您会得到。。。http://www.eroticahub.site/#!body=privacy[使用jquery/ajax-load渲染]
如果你没有javascript,你只会得到。。。http://www.eroticahub.site/body/privacy_body.html
^我只是获取jquery/ajax正在插入到模板中的文件。
这不是一个很好的解决方案。我想要一个永远不会进行完全刷新/重新加载,但每个主要搜索引擎都会对其进行完全索引的页面。
有可能发出这样的命令吗:
For each link in page,
if ( user_has_javascript )
return page_with_javascript;
else
return serverside_render( page_with_javascript );
这样,任何没有javascript(包括网络爬虫)的用户都将获得纯html/css版本的页面。我正计划使用Ruby作为我的后端。有人能解决这个问题吗?
首先让所有东西都能使用常规URL而不使用JavaScript。您希望您的JS不引人注目,所以在一个可工作的、简单的HTML+服务器端解决方案之上构建它。
接下来编写JavaScript,从服务器获取所需的数据并且更新文档以匹配页面中的另一个页面。
该JavaScript应该使用pushState
来更改URL,以匹配您使用JavaScript在本地生成的服务器中的页面URL。
注意:pushState
替换hashbang URI。这是为您描述的用例设计的标准(而hashbang是一个丑陋的破解)
将该JavaScript绑定到您的链接点击/表单提交等事件。
为popstate事件添加一个监听器,这样当用户单击Back时,您就可以将页面恢复到以前的状态。
好的。假设用户直接进入…色情网站/隐私,然后点击链接进入色情网站/合法链接如下:
<a href=eroticahub.site/legal.html onclick=function(){window.location.hash = 'legal.html';return false;}>
Link
</a>
因此,如果用户没有javascript,他们会转到eroticahub.site/legal.html并从服务器请求一个全新的页面,如果他们有javascript,他们就会转到eroticahub.site#legal.html并不会从服务器请求全新的页面。
#将触发一个散列更改事件,该事件将调用一个带有大switch语句的函数,该语句将包含(window.location.hash=="legal.html")。此条件将触发使用jquery/ajax将snippet/legal.html html加载到网页中。
如果链接指向eroticahub.site/legal.html,后端将提供与eroticahhub.site/privacy.html相同的模板,但中间部分不同,包含snippets/privacy.html 中的单词
如果用户有javascript,则中间部分的呈现方式与用户没有javascript的呈现方式相同。只有当用户单击链接时,才必须区分他们是否有javascript。AJAX必须在eroticahub.site/privacy的contentdiv中[替换]静态内容之前加载动态内容(#legal),然后这将被完全相同的div中的更多html替换
<a href=eroticahub.site/legal.html onclick=function(){window.location.hash = 'legal.html';return false;}>
Link
</a>
<a href=eroticahub.site/privacy.html onclick=function(){window.location.hash = 'privacy.html';return false;}>
Link
</a>
<a href=eroticahub.site/user_content/stories.html onclick=function(){window.location.hash = 'user_content/stories.html';return false;}>
Link
</a>
等等。
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 谷歌表单-根据分配给谷歌应用程序的工作为商业用户预先填充多项选择列表
- 正确传输和保护用户'web应用程序的密码
- 如何在网络应用程序中使用Firebase进行用户授权
- 我的购物应用程序不会将用户想要购买的东西相加,也不会打印总成本
- 通过chrome后台扩展或后台应用程序访问用户麦克风
- 在聊天应用程序中显示联机用户
- 如何获取运行我的 Web 应用程序的用户的 Windows 登录用户名
- 为用户应用程序托管 javascript 文件是否安全
- 捕获在Windows应用程序中启动其他应用程序的用户事件
- 计算喜欢我的帖子facebook应用程序的用户数量
- 如何在angularjs应用程序中注销后,通过浏览器后退按钮禁止用户访问上一页
- Meteor(JavaScript应用程序平台)|向用户帐户添加数据
- 网络应用程序的正确instagram身份验证方法(没有instagram帐户的用户)
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 在我的html页面-web应用程序用户界面的一个选项卡中的另一个html页面中的选项卡
- 基于Rails的javascript应用程序的安全性:如何在渲染的javascript中验证用户的权限
- 如何为Meteor应用程序中的第一个用户分配特定角色
- Javascript:离开单页应用程序时的用户确认
- PHP/AAJAX多用户应用程序-数据正在以某种方式丢失