问题标签 [html5-history]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
170 浏览

javascript - history.pushState() $_GET 参数未在 chrome 中设置?

使用 chrome 时似乎没有正确传递 $_GET 参数,但是使用 FF 确实可以工作。如果链接有尾随参数,如page.php?id=10&something=else,则 URI 更改为 just page.php

有没有办法将这些 $_GET 参数保留在 URI 中?

0 投票
1 回答
305 浏览

javascript - 关于如何以这种方式“ajaxify”网站的任何提示?

我们建立了一个包含不同页面的网站,其中一些页面具有其他页面没有的功能。例如:画廊页面使用 jQuery Colorbox 打开照片。因此,有些页面加载了一些 jQuery 插件,而其他一些页面则不加载(“关于我们”页面不需要 Colorbox 插件)。

现在,客户要求我们在页面顶部放置一个持久的音频播放器。我们有两种选择:使用框架(太糟糕了!)或使用 ajax 调用来更新内容和使用历史 API 来更新 url/浏览器历史。

好的,我们将点击事件附加到链接。该事件使用ajax请求新页面,然后页面内容被替换。问题是:js 文件/jQuery 插件?当请求页面的 js 文件被加载时,$(document).ready(); 事件已经被触发。

此外,某些页面可能包含非外部 javascript,例如

关于如何以最佳方式做到这一点的任何提示?谢谢!

0 投票
2 回答
2030 浏览

javascript - 如何从外部网页导航回使用 pushState 创建的伪 url?

试图理解历史 API,下面的 Mozilla 解释向我建议,即使您推送到历史的 url 在服务器上并不真正存在,来自外部源的后退按钮单击将返回 pushState 调用的原始页面制作:

假设http://mozilla.org/foo.html执行以下 JavaScript:

这将导致 URL 栏显示http://mozilla.org/bar.html,但不会导致浏览器加载 bar.html 甚至检查 bar.html 是否存在。

现在假设用户现在导航到 google.com,然后单击返回。此时,URL 栏将显示 ...mozilla.org/bar.html,并且页面将获得一个 popstate 事件,其 state 对象包含 stateObj 的副本。页面本身看起来像 foo.html,尽管页面可能会在 popstate 事件期间修改其内容。

如果我们再次单击返回,URL 将变为 ...mozilla.org/foo.html,并且文档将获得另一个 popstate 事件,这次是一个空状态对象。在这里,返回也不会改变上一步中的文档内容,尽管文档可能会在接收到 popstate 事件后手动更新其内容。

我在一个 MVC 项目中创建了一个测试页面,它实际上只是将按钮单击与上面示例中的 2 行 javascript 相关联。正如预期的那样,单击该按钮将浏览器位置从 localhost 更改为 localhost/bar.html,并且后退和前进按钮按预期工作。但是如果我然后导航到谷歌并按下后退按钮,我会收到 404 服务器错误。我误解了文档吗?以及如何修改代码以使来自外部源的后退按钮起作用,而无需创建实际的“bar.html”?

0 投票
1 回答
802 浏览

html5-history - Javascript history.back 在 iOS7 中不起作用

我们的应用程序是用混合方法开发的,我们使用的是 JQM 框架。对于页面转换,我们使用了 $.mobile.changepage 方法,对于后退导航,使用了 history.back() 和 history.go(-1) 方法。

在 safari 中打开时,它可以工作,但不能在 iOS7 主屏幕上工作。如果有人帮助我解决这个问题,将不胜感激。提前致谢。

0 投票
1 回答
1464 浏览

php - history.js 在后退按钮上重新加载页面

我是 html5 和history.js的新手,仍在尝试掌握 history.js 的概念。这里有两个问题。

  1. history.js 是否只是用于更改地址栏中的 URL 而无需刷新页面?(比如使用哈希来操作 url)

  2. 我使用 history.js 完成了一个简单的代码(这是我的小提琴

第一页的网址是http://mysite.com?id=1,2,3

当按下下面的按钮之一时,JS 代码会隐藏按钮,它会从 url 中删除 ID 并使用 history.js 更改地址栏中的 url

问题是,当我点击后退按钮时,网址会正确更改,但我如何让它取消隐藏隐藏按钮?或者我如何刷新页面?还是我使用ajax?最佳做法是什么?

0 投票
1 回答
1687 浏览

jquery - Html 5 pushsate vs history.js vs HTML5-History-API

我打算使用本页所述的 html5 pushstate

http://html5doctor.com/history-api/

但它只支持现代浏览器。我在 Google 上搜索,发现还有另一个替代方案是 history.js,它支持更多的浏览器。

我找到了两个github链接:

https://github.com/devote/HTML5-History-API

https://github.com/browserstate/history.js

哪一个是正确的。

另外,我是否需要通过检查浏览器版本将它与此处提到的历史 API 结合使用http://html5doctor.com/history-api/ ?

请建议。

0 投票
1 回答
3300 浏览

javascript - 处理 iframe 内的历史导航

我正在构建一个导航页面,该页面显示iframe. 要求是突出显示当前加载的页面对应的导航链接。框架内容不受我控制。当用户在其浏览器中使用后退/前进按钮时,问题就开始了。

这个想法是用来history.replaceState将有关导航链接的信息与页面相关联,并在popstate事件时恢复导航面板状态。当内容通过 AJAX 加载到应用程序中时,它在其他情况下工作得很好。

iframe导航的情况下,history顶部窗口的对象没有被修改,所以我应该使用contentWindow,从而限制我自己只支持来自同一域的页面。

问题是我无法订阅该活动。以下代码不起作用:

在后一种情况下,历史导航contentWindow.onpopstatenull.

最后我尝试使用该load事件并且它起作用了,但是在它触发之前有很大的延迟,因为它一直等到所有页面资源都被加载。

我尝试的另一种方法是轮询contentWindow.location.href计时器以更早做出反应。乍一看它运行良好,但后来我注意到有时历史记录会从浏览器中消失(至少在 Firefox 中)。

有没有其他好的方法来跟踪里面的历史iframe?可能我犯了一些错误?无论内容的域如何,也许甚至有办法做到这一点?


这是源代码和演示页面(添加了延迟以更好地说明脚本行为)。
onload 方法:src 演示
计时器方法:src 演示

0 投票
0 回答
786 浏览

javascript - 我如何从 popstate 获得任何东西?

我已经阅读了所有关于推送/弹出状态的 Mozilla 文档。我认为我错过了让它发挥作用的重要部分。pushstate 正在按预期更新地址栏。

但是如何找回页面呢?基本上我像这样使用pushState

但后来我想formattedTitle从 popstate 回来,这样我就可以运行getDetail(formattedTitle)函数了。但这不起作用。

0 投票
0 回答
89 浏览

javascript - 使用新 URL 更新地址栏且没有主题标签

在我的项目中,我使用这个 Ajax 函数(如下)来获取内容(它工作得非常好^^)。

无论如何,我希望有一个更好看的 URL(老实说,我不喜欢这个标签,)我一直在使用的脚本,直到现在我得到这样的东西:http://example.com/#sitename

为了改变这一点,我做了一些研究:我学到了这个:the window.history.pushState('page2', 'Title', '/page2.php');JavaScript 行(有关在不重新加载的情况下更新 URL 的更多信息,请参见此处此处)

我应该能够实际更改网址,以便我喜欢它。现在我的问题是我是一个完全的初学者白衣编程(当我试图将它包含在它破坏的代码中并且没有任何工作了。)并且想问是否有人可以帮助我将它包含在代码中(下)

我也听说过History.js - 如果我阅读正确,这也应该可以解决问题,但就像我说的我没有经验,不得不问如何将它包含到 ajax 调用中(我的意思是将它包含在到我的代码)还是不可能?

0 投票
1 回答
365 浏览

php - Laravel 4 与 HTML5 历史

如何在 Laravel 4 中使用 HTML5 历史记录?这是我的刀片内容文件:

我想只加载 HTML5 历史中的内容部分,方法是:

但它不起作用。@extends必须是文件的第一行。我正在考虑将一些@if($showMain)放在主文件中。但是这种方式会使代码变得杂乱无章,难以维护。那么,如何在 Laravel Blade 中以更简洁的方式存档呢?或者,有没有更好的方法来使用 Laravel 处理 HTML5 历史记录?

谢谢。