问题标签 [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.
html - 带有ajax的HTML5历史popstate,直接链接不起作用
这个Demo我要点击前进到content
(index.php?id=id)点击回到subject
(index.php)。
Q1。(index.php?id=id) 直接链接content
页面不可用,它会显示 (index.php) subject
,为什么?
Q2。第二次点击后退(前进>后退>前进>后退)然后url将停止更改,为什么?(Safari 5) 更新:使用window.onpopstate
url 工作正常。不会得到这个错误。
任何建议将不胜感激。
演示
索引.php
html5-history - 页面标题不会被 history.pushState 改变
我刚刚在 Google Chrome 中打开了一个带有少量基本标签(如 html、body、head 等)的空白 HTML 页面,并尝试在控制台中执行以下命令:
历史事件工作正常,但页面标题保持不变。可以吗?我应该每次都手动更改吗?如果我应该,为什么 pushState() 方法中有这样的参数,如标题?
javascript - 内容正在通过 ajax 成功加载。但不显示
当我单击锚标记时,我正在玩djax,url 发生了变化,当我查看页面源时,它也发生了变化,但是页面本身并没有改变它的内容,即使我查看了页面源它已经改变了任何想法,为什么?
这是标记的片段
当我单击 url 更改但结果未显示但当我查看页面源时它显示正确的标记(或者我应该说thankyou.jsp 的标记)
这是js代码的代码
javascript - 使用 pushState,访问另一个站点,然后回击得到我的 XHR 内容
为有点模糊的标题道歉,希望这些重现步骤能告诉你我遇到的问题:
- 在谷歌浏览器中,访问griffinalters.com(在最新版本的 Firefox 或 IE 中似乎不存在该问题);
- 点击任意一张卡片;
- 访问另一个站点(about:blank 对此非常有效);
- 回击,您应该只看到为部分请求加载的 HTML(恰好看起来像http://www.griffinalters.com/card/29/?ajax)。
我 pushState 的链接是/card/29/
,但我加载到我的 div 中的链接是/card/29/?ajax
(根据这个答案中的建议)。最初我试图检查 in 的存在XMLHTTPRequest
(HTTP_X_REQUESTED_WITH
对于它的价值,我正在使用 Django 的is_ajax
方法)。
我加载了我的 XHR 返回的 HTML 块:
依次调用:
我真正想了解的是为什么从不同的站点回击不会加载我推送的 URL,而是加载获取的 URL。谁能指出我正确的方向?
javascript - 有什么方法可以快速轻松地将标准网站加载转换为整个网站上的 AJAX?
也许这不是一个好问题,但我想知道它是否会以某种方式轻松快速(也许只有 1 个功能?)可以将网站上的所有链接从刷新网页更改为加载用户通过 AJAX 单击的 URL?
我的网站到处都有标准链接,但是如果您想从中获得适用于 iPhone 的移动应用程序,则需要到处使用 AJAX(可能还有 HTML5 History API),因为任何链接都会打开 Safari 浏览器。
您认为有什么方法可以快速转换每个链接以删除当前源代码并加载全新的页面而无需刷新浏览器窗口?或者它是否需要为每组链接手动编码和单独的功能?
例子:
你认为这是可能的还是这里有什么陷阱?
javascript - 带有 history.pushState 和 popstate 的 Ajax - 当 popstate 状态属性为空时我该怎么办?
我正在尝试使用 ajax 加载内容的 HTML5 历史 API。
我有一堆通过相对链接连接的测试页面。我有这个 JS,它处理对这些链接的点击。单击链接时,处理程序获取其 href 属性并将其传递给 ajaxLoadPage(),后者将来自请求页面的内容加载到当前页面的内容区域。(如果您正常请求,我的 PHP 页面设置为返回完整的 HTML 页面,但如果 ?fragment=true 附加到请求的 URL,则仅返回一部分内容。)
然后我的点击处理程序调用 history.pushState() 在地址栏中显示 URL 并将其添加到浏览器历史记录中。
当您使用 pushState 将 URL 添加到历史记录时,您还需要为 popstate 事件包含一个事件处理程序,以处理对后退或前进按钮的单击。(如果您不这样做,单击返回会在地址栏中显示您推送到历史记录的 URL,但页面未更新。)因此,我的 popstate 处理程序获取保存在我创建的每个条目的 state 属性中的 URL,并将其传递给 ajaxLoadPage 以加载适当的内容。
这适用于我的点击处理程序添加到历史记录的页面。但是当我“正常”请求浏览器添加到历史记录的页面时会发生什么?假设我正常登陆我的第一页,然后通过执行 ajax 加载的点击浏览我的网站 - 如果我然后尝试通过历史返回到该第一页,最后一次点击显示第一页的 URL,但没有'不在浏览器中加载页面。这是为什么?
我可以看出这与最后一个 popstate 事件的 state 属性有关。该事件的 state 属性为 null,因为只有通过 pushState() 或 replaceState() 添加到历史记录的条目才能为其赋值。但是我第一次加载页面是一个“正常”请求——为什么浏览器不只是退后一步并正常加载初始 URL?
jquery - 使用 HTML5 History API 使用 AJAX 重新加载页面时多次包含 Google Maps API
我有一个使用 HTML5 历史 API 导航和重新加载页面信息的站点。这会发送一个检索相关页面信息的 AJAX 调用。在我的“联系人”页面上,我有 google maps api 脚本。如果通过访问 URL 加载页面,它工作正常。谷歌加载地图 API 并将其包含在我的结束正文标记之前。
如果我离开页面(使用历史 API 删除和添加内容),然后返回到联系人页面(再次通过历史 API),则会对(已包含的)地图 API 进行第二次调用,并将其加倍. 这会导致控制台中出现警告消息。
我已尝试在加载新内容之前删除在结束正文标记之前添加的 Google 地图脚本,但由于脚本已被解析,地图的所有相关功能仍保留在浏览器内存中。
所以我想我的问题是,“当我对页面内容发出 AJAX 请求时,有什么方法可以卸载所有的谷歌地图 JS?”。
控制台消息如下:
警告:您已在此页面上多次包含 Google Maps API。这可能会导致意外错误。
javascript - Android webview“location.replace”不起作用
我有一个带有重定向到另一个页面的页面的 Android 网络视图,使用location.replace(url)
.
假设我有页面“A”重定向到页面“B”(使用 location.replace)。当从“B”页面按下“返回”按钮时,页面返回到“A”页面,这会将其再次重定向到“B”页面。当我调试历史 API(history.length)时,我可以清楚地看到在页面“B”上长度增加了“1”(仅在 Android 4.X webview 上。在 iOS / web 浏览器 / Android 2.X 上保持不变),这是一个错误!(location.replace 不应更改 history.lenght!)
internet-explorer - Backbone.history:深层网址在 IE 中没有正确支持
在我的单页主干应用程序中,我无法让较长的网址在 IE 中正确路由。任何嵌套多于一层的 url 在直接加载它们时都不会收到正确的 hash fallbak。
顶级网址工作正常...
导航(应用内)工作正常......
但是访问更深的 url 会直接破坏页面
更新:
这是IE9
html5-history - History API pushState 如何避免串联
我有以下两个 URL(我使用单页应用程序,因此它们不受任何真实页面的支持):
解决方案:Urls 必须以“/”开头,以防止串联。
C/D
T
在第二次调用之后,我调用pushState()
了两次传递上面的 URL,mysite.com/C/T
而我期待的是mysite.com/T
.
如何防止pushState()
连接 URL?