Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完美的解决方案,可在整个;页面加载";?使用javascript加载页面_Javascript_Html_Browser History_Html5 Audio_Background Music - Fatal编程技术网

完美的解决方案,可在整个;页面加载";?使用javascript加载页面

完美的解决方案,可在整个;页面加载";?使用javascript加载页面,javascript,html,browser-history,html5-audio,background-music,Javascript,Html,Browser History,Html5 Audio,Background Music,我正在开发一本在线音乐杂志。我们有一个html5/flash音乐播放器,这是网站的主要部分。但是这个网站也有很多文章和东西。因此,基本上,我希望跨页面加载无缝播放音乐,但我也希望避免使用完整的javascript应用程序,因为我希望所有内容在Google中都对蜘蛛友好且可索引 我使用html5历史api和hashbang(#!)回退功能,在点击时加载主页中的各种内容。加载的URL也指向包含内容的页面 例如: 我的索引页面munimkazia.com中的munimkazia.com/page1.h

我正在开发一本在线音乐杂志。我们有一个html5/flash音乐播放器,这是网站的主要部分。但是这个网站也有很多文章和东西。因此,基本上,我希望跨页面加载无缝播放音乐,但我也希望避免使用完整的javascript应用程序,因为我希望所有内容在Google中都对蜘蛛友好且可索引

我使用html5历史api和hashbang(#!)回退功能,在点击时加载主页中的各种内容。加载的URL也指向包含内容的页面

例如: 我的索引页面munimkazia.com中的munimkazia.com/page1.html链接将从page1.html加载内容并插入。URL将更改为munimkazia.com/#/firefox和IE中的page1.html,以及chrome中的munimkazia.com/page1.html。。 由于href链接是munimkazia.com/page1.html,爬行器将跟随该链接并获取内容。 我已经在page1.html正确设置了页面,准备好查看了。但是现在,我有问题了

如果我决定在这个页面上使用ajax加载,浏览器位置栏上显示的URL将与hashbang回退不一致(http://munimkazia.com/page1.html/#!/page2.html) 如果我决定将所有单击重定向到主容器页面,并加载page2.html,那么在此之后一切都会正常工作,但是此页面加载将在它之前中断音乐播放(如果有)

此外,我不想将所有内容都重写为,因为我希望所有内容都存在,而不是通过javascript获取和编写,以供搜索引擎蜘蛛阅读。 我知道谷歌有一个从#读取内容的规范!URL,但我希望页面为用户加载文章内容,即使JS被禁用

有什么想法/建议/解决办法吗

编辑:这些URL只是解释我观点的例子。在munimkazia.com上没有获取页面的javascript代码!URL的可以被谷歌编入索引,这就是它们的全部意义,否则人们只会自己使用散列

我认为这个想法是谷歌see的#!URL并将其转换为querystring参数,例如
example.com/#/products/123/ipod-nano-32gb
变为
example.com/?\u转义\u片段=/products/123/ipod-nano-32gb
,但用户仍使用哈希链接URL。您对服务器进行编程以响应?_转义的_片段uu参数,但JavaScript用户会被重定向到正确的#!网址

在这里查看谷歌规范


我不认为这两种类型的URL都使用是一个好主意,因为你会有两个URL被用户发布在博客、Twitter等相同页面上,编写代码来可靠地处理它也是一个噩梦。在HTML5 History API得到更广泛的支持之前,您可能必须暂时满足于使用hash-bang。我认为两者都使用是个好主意,因为可以与History API一起使用的常规URL要好得多。你可以使用规范链接来帮助谷歌实现两个URL指向相同的内容。公平点,但我的问题是Chrome/Safari用户会发布/products/123/ipod nano链接,而FF&IE用户会发布/#/products/123/ipod nano。但是,如果您能够绕过URL规范化问题,并且疯狂的体系结构代码需要支持这一点,那么它可能会起作用。然而,Twitter和Facebook等网站决定不去打扰,我想知道为什么?我知道谷歌的ajax爬行规范,我认为这是最后的手段,因为没有其他搜索引擎支持该规范。此外,Facebook也使用历史API。尝试在chrome中打开新闻源中的照片,浏览器URL将更改为photo.php。在firefox中,它添加了一个#!,但它在chrome中使用历史API。试一试:)我刚想起我在考虑鞋底时想到的另一个主要问题!方法如果我决定将所有munimkazia.com/page1.html重定向到munimkazia.com/#/html加载主容器并通过ajax加载页面,如果禁用JS,一切都将失败。如果JS被禁用,我至少希望页面加载文章。如果你只是想得到Google等。要抓取常规URL,那么你不需要hash-bang URL,只需使用hash,因为Google see的!并且会尝试做一些其他搜索引擎不支持的事情,就像你说的那样。我并没有说使用这两种方法都是不可能的,只是非常困难,但祝你好运。我可能会以一种渐进增强的方式来处理它,用普通URL构建一个常规站点,进行常规GET请求,添加History.pushstate支持,逐渐添加#fragment支持等。