当谈到js时,我几乎是个新手,所以如果我错过了一些非常简单的东西,我很抱歉。 基本上,我已经做了一些研究,使用history.pustate和popstate,我做了这样一个查询string被添加到URL( ?v=images )或( ?v=profile )的末尾… ( v意思是“视图”)通过使用这个: var url = "?v=profile" var stateObj = { path: url }; history.pushState(stateObj, "page 2", url); 我想这样做,所以我可以加载到div的内容,但没有重新加载我已经完成使用.load()函数的页面。 然后我使用这个代码: $(window).bind('popstate', function(event) { var state = event.originalEvent.state; 在$(document).ready()部分,稍后在<script>标签内尝试,并且都不起作用。 我不知道该怎么做,所以当我使用后退button时,内容会发生变化,或者至less这样做,我可以触发我自己的function; 我假设它与状态对象有关? 我似乎无法在网上find任何能清楚解释这个过程的东西。 如果有人能帮助我,这将是惊人的,并提前感谢任何人!
我想在不重新加载页面的情况下更改url。 我find的可能解决scheme是 window.history.pushState('page2','Title','/page2.php'); 但有些浏览器如Firefox 3.5,IE6 +不支持这个,所以对于他们来说解决scheme是 var uri = window.location.href; 但问题是如何发现,如果浏览器支持history.pushstate或不? 是TRY CATCH是可能的解决scheme或其他任何事情。
我正在开发一个网页,根据下一步或后面的动作,我做相应的animation,问题出现在使用pushstate的时候。 当我收到事件时,我怎么知道用户是否使用Pushstate API点击了回退或者转发历史button?还是我必须自己实现一些东西?
很多人一直在说,使用pushState而不是hashbang。 我不明白的是,如果不使用hashbang,你将如何search引擎友好? 推测你的pushState内容是由客户端JavaScript代码生成的。 该情景因此是: 我在example.com 。 我的用户点击一个链接: href="example.com/blog" pushState捕获点击,更新URL,从某处抓取JSON文件,并在内容区域创build博客文章列表。 随着hashbangs,谷歌知道去escaped_fragmenturl获取其静态内容。 使用pushState,Google只是看不到任何东西,因为它不能使用JavaScript代码来加载JSON并随后创build模板。 唯一能做的就是在服务器端渲染模板,但是这完全否定了将应用层推送到客户端的好处。 所以,我得到这个权利,pushState是不友好的客户端应用程序的search引擎优化?
现在有很多很酷的工具可以制作function强大的“单页”JavaScript网站。 在我看来,这是通过让服务器充当一个API(而不是其他任何东西)并让客户端处理所有的HTML生成东西来完成的。 这种“模式”的问题是缺乏search引擎支持。 我可以想到两个解决scheme: 当用户进入网站时,让服务器完全按照客户端的导航来呈现页面。 所以如果我直接去http://example.com/my_path那么如果我通过pushState去到/my_path ,服务器将会呈现和客户端一样的东西。 让服务器只为search引擎机器人提供一个特殊的网站。 如果一个普通用户访问http://example.com/my_path ,服务器应该给他一个JavaScript网站的繁重版本。 但是,如果谷歌机器人访问,服务器应该给它一些最小的HTML与我要谷歌索引的内容。 第一个解决scheme在这里进一步讨论。 我一直在做这个网站,这不是一个很好的经验。 这不是干的,在我的情况下,我不得不为客户端和服务器使用两个不同的模板引擎。 我想我已经看到了一些好的Flash网站的第二个解决scheme。 我比第一个更喜欢这种方法,并且在服务器上使用正确的工具,可以非常轻松地完成。 所以我真正想知道的是以下几点: 你能想到更好的解决scheme吗? 第二种解决scheme有什么缺点? 如果Google以某种方式发现我没有像普通用户那样为Google bot提供完全相同的内容,那么我是否会在search结果中受到惩罚?
我正在研究如何使用HTML5 History API来解决AJAX加载内容的深层链接问题,但是我正在努力实现。 有没有人知道有什么好的资源? 我想用这个,因为它似乎是一个很好的方式来允许那些被发送的链接可能没有JS打开的可能性。 当有人用JS发送一个链接给某人时,许多解决scheme失败。 我最初的研究似乎指向JS中的History API和pushState方法。 http://html5demos.com/history
所以现在HTML5引入了history.pushState来改变浏览器的历史,网站开始使用这个结合Ajax而不是改变URL的片段标识符。 可悲的是,这意味着这些呼叫不能再通过onhashchange来检测。 我的问题是:有一个可靠的方法(破解?))来检测网站使用history.pushState ? 规范没有提到任何有关事件的提出(至less我找不到任何东西)。 我试图创build一个门面,并用我自己的JavaScript对象replacewindow.history ,但它根本没有任何效果。 进一步的解释:我正在开发一个Firefox插件,需要检测这些变化,并采取相应的行动。 我知道前几天有一个类似的问题,问是否听一些DOM事件是有效的,但我不想依赖这个事件,因为这些事件可能由于许多不同的原因而产生。 更新: 这里是一个jsfiddle (使用Firefox 4或Chrome 8),它显示当pushState被调用时onpopstate没有被触发(或者我做错了什么?随意改进!)。 更新2: 另一个(方面)的问题是,当使用pushState时, window.location没有被更新(但是我已经在这里读到了关于它的内容)。
有人知道如果Internet Explorer支持history.pushState()和history.replaceState()方法来操纵浏览器历史吗? 考虑到这些只是在Firefox 4中实施,我不屏住呼吸,但有谁知道他们是否在IE9?
我正在使用S3来托pipe一个JavaScript应用程序,将使用HTML5 pushStates。 问题是,如果用户书签的任何url,它不会解决任何事情。 我需要的是能够接受所有的url请求,并在我的S3存储桶中提供根index.html,而不仅仅是做一个完整的redirect。 然后我的JavaScript应用程序可以parsingURL并提供正确的页面。 有什么办法可以告诉S3为所有URL请求提供index.html而不是redirect? 这与设置apache来处理所有传入的请求类似,如下例所示: https : //stackoverflow.com/a/10647521/1762614 。 我真的想避免运行一个Web服务器来处理这些路线。 做S3的一切都非常有吸引力。