如果创建的URL不是“真正的”URL,那么使用History API有什么意义?当然,我可以尽可能多地推送状态,但如果我不能,那么将这些URL之一包含在某个书签中,这有什么意义?我真正的问题是 - 你如何设置一个Web服务器,以便不管输入的地址如何,它只加载一个Web应用程序(保留地址以便我可以使用JavaScript引用它来加载相关内容)?HTML5历史API和书签
因此,我可以使用历史记录API来显示适当的地址,然后让用户在稍后返回到网站时实际工作。
如果创建的URL不是“真正的”URL,那么使用History API有什么意义?当然,我可以尽可能多地推送状态,但如果我不能,那么将这些URL之一包含在某个书签中,这有什么意义?我真正的问题是 - 你如何设置一个Web服务器,以便不管输入的地址如何,它只加载一个Web应用程序(保留地址以便我可以使用JavaScript引用它来加载相关内容)?HTML5历史API和书签
因此,我可以使用历史记录API来显示适当的地址,然后让用户在稍后返回到网站时实际工作。
从历史记录API创建的URL没有任何假冒。当访问者使用它们加载整个页面时(通过外部超链接或书签或不是),您只需要正确处理它们。您可以在客户端或服务器端执行此操作。
处理URLs服务器端当然完全取决于你如何开发你的应用程序,并且这个问题有点超出范围。
但是,在客户端,您需要JavaScript解析URL,然后进行相应的响应。我个人发现jQuery Address插件非常适合这个。
包含插件像这样,包括绝对路径到你的应用程序的根与state
说法:
<script type="text/javascript" src="jquery.address-1.3.min.js?state=/absolute/path/to/your/application"></script>
然后你不得不jQuery.address
解析URL时,页面加载和DOM准备:
// Handle the initial load and make the page look the way it's supposed to
$.address.init(function(e) {
// Address and path details can be found in the event object.
// Explore it a bit via console.log()
console.log(e);
});
对于一个很好的,工作的例子,我建议您查看的this jQuery.address
example源以及the jQuery.address
docs。
利用standard organization within URLs。在查询中对状态信息进行编码,可以由客户端和服务器脚本处理,但始终使用指向您的Web应用程序的相同基本URL。
我从你的答案明白的是,而不是简单地将内容添加到ULR中作为“基本URL +”/ somecontent'“,使用类似”基本URL +“?Variable1 = SomeContentA&variable2 = SomeContentB'”。我对么 ? – vivek
如果你使用Apache,与mod_rewrite你可以直接您想在服务器上的同一资源然而,许多网址。然后,该资源必须检查URL并以正确的状态动态创建页面,无论服务器端还是客户端完成了。
如果你不使用MVC框架,你可以使用.htaccess
来处理这个提到@nwellcome:
# html5 pushstate (history) support:
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
</ifModule>
非常感谢您的详细解答。因此,根据您提供的示例链接,当我备份到http://www.asual.com/jquery/address/samples/时,该示例说明了“Simple PHP/mod_rewrite支持示例HTML5的示例”,那么你会假设他们使用nwellcome的mod_rewrite来引导传入的超链接,然后在应用程序中使用jQuery.address更新地址状态? – RyJ
是的,确切地说。你最好重写(不重定向!)应用程序URL下的所有流量到您的应用程序的确切URL(您在'state'参数中指定的相同地址)。 Apache使用mod_rewrite来实现这一点,但任何体面的Web服务器和Web框架将提供某种URL重写方案。 – Roshambo