问题标签 [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.
javascript - history.pushState() $_GET 参数未在 chrome 中设置?
使用 chrome 时似乎没有正确传递 $_GET 参数,但是使用 FF 确实可以工作。如果链接有尾随参数,如page.php?id=10&something=else
,则 URI 更改为 just page.php
。
有没有办法将这些 $_GET 参数保留在 URI 中?
javascript - 关于如何以这种方式“ajaxify”网站的任何提示?
我们建立了一个包含不同页面的网站,其中一些页面具有其他页面没有的功能。例如:画廊页面使用 jQuery Colorbox 打开照片。因此,有些页面加载了一些 jQuery 插件,而其他一些页面则不加载(“关于我们”页面不需要 Colorbox 插件)。
现在,客户要求我们在页面顶部放置一个持久的音频播放器。我们有两种选择:使用框架(太糟糕了!)或使用 ajax 调用来更新内容和使用历史 API 来更新 url/浏览器历史。
好的,我们将点击事件附加到链接。该事件使用ajax请求新页面,然后页面内容被替换。问题是:js 文件/jQuery 插件?当请求页面的 js 文件被加载时,$(document).ready(); 事件已经被触发。
此外,某些页面可能包含非外部 javascript,例如
关于如何以最佳方式做到这一点的任何提示?谢谢!
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”?
html5-history - Javascript history.back 在 iOS7 中不起作用
我们的应用程序是用混合方法开发的,我们使用的是 JQM 框架。对于页面转换,我们使用了 $.mobile.changepage 方法,对于后退导航,使用了 history.back() 和 history.go(-1) 方法。
在 safari 中打开时,它可以工作,但不能在 iOS7 主屏幕上工作。如果有人帮助我解决这个问题,将不胜感激。提前致谢。
php - history.js 在后退按钮上重新加载页面
我是 html5 和history.js的新手,仍在尝试掌握 history.js 的概念。这里有两个问题。
history.js 是否只是用于更改地址栏中的 URL 而无需刷新页面?(比如使用哈希来操作 url)
我使用 history.js 完成了一个简单的代码(这是我的小提琴)
第一页的网址是http://mysite.com?id=1,2,3
当按下下面的按钮之一时,JS 代码会隐藏按钮,它会从 url 中删除 ID 并使用 history.js 更改地址栏中的 url
问题是,当我点击后退按钮时,网址会正确更改,但我如何让它取消隐藏隐藏按钮?或者我如何刷新页面?还是我使用ajax?最佳做法是什么?
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/ ?
请建议。
javascript - 处理 iframe 内的历史导航
我正在构建一个导航页面,该页面显示iframe
. 要求是突出显示当前加载的页面对应的导航链接。框架内容不受我控制。当用户在其浏览器中使用后退/前进按钮时,问题就开始了。
这个想法是用来history.replaceState
将有关导航链接的信息与页面相关联,并在popstate
事件时恢复导航面板状态。当内容通过 AJAX 加载到应用程序中时,它在其他情况下工作得很好。
在iframe
导航的情况下,history
顶部窗口的对象没有被修改,所以我应该使用contentWindow
,从而限制我自己只支持来自同一域的页面。
问题是我无法订阅该活动。以下代码不起作用:
在后一种情况下,历史导航contentWindow.onpopstate
是null
.
最后我尝试使用该load
事件并且它起作用了,但是在它触发之前有很大的延迟,因为它一直等到所有页面资源都被加载。
我尝试的另一种方法是轮询contentWindow.location.href
计时器以更早做出反应。乍一看它运行良好,但后来我注意到有时历史记录会从浏览器中消失(至少在 Firefox 中)。
有没有其他好的方法来跟踪里面的历史iframe
?可能我犯了一些错误?无论内容的域如何,也许甚至有办法做到这一点?
javascript - 我如何从 popstate 获得任何东西?
我已经阅读了所有关于推送/弹出状态的 Mozilla 文档。我认为我错过了让它发挥作用的重要部分。pushstate 正在按预期更新地址栏。
但是如何找回页面呢?基本上我像这样使用pushState
但后来我想formattedTitle
从 popstate 回来,这样我就可以运行getDetail(formattedTitle)
函数了。但这不起作用。
javascript - 使用新 URL 更新地址栏且没有主题标签
在我的项目中,我使用这个 Ajax 函数(如下)来获取内容(它工作得非常好^^)。
无论如何,我希望有一个更好看的 URL(老实说,我不喜欢这个标签,)我一直在使用的脚本,直到现在我得到这样的东西:http://example.com/#sitename
为了改变这一点,我做了一些研究:我学到了这个:the window.history.pushState('page2', 'Title', '/page2.php');
JavaScript 行(有关在不重新加载的情况下更新 URL 的更多信息,请参见此处或此处)
我应该能够实际更改网址,以便我喜欢它。现在我的问题是我是一个完全的初学者白衣编程(当我试图将它包含在它破坏的代码中并且没有任何工作了。)并且想问是否有人可以帮助我将它包含在代码中(下)
我也听说过History.js - 如果我阅读正确,这也应该可以解决问题,但就像我说的我没有经验,不得不问如何将它包含到 ajax 调用中(我的意思是将它包含在到我的代码)还是不可能?
php - Laravel 4 与 HTML5 历史
如何在 Laravel 4 中使用 HTML5 历史记录?这是我的刀片内容文件:
我想只加载 HTML5 历史中的内容部分,方法是:
但它不起作用。@extends
必须是文件的第一行。我正在考虑将一些@if($showMain)
放在主文件中。但是这种方式会使代码变得杂乱无章,难以维护。那么,如何在 Laravel Blade 中以更简洁的方式存档呢?或者,有没有更好的方法来使用 Laravel 处理 HTML5 历史记录?
谢谢。