问题标签 [hashchange]

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 投票
1 回答
4502 浏览

jquery - jQuery LocalScroll + hashchange 事件浏览器兼容性问题

我正在构建一个使用 Ariel Fleslers jQuery LocalScroll 插件的网站,我想做两件事:

1) 单击链接时将滚动动画到锚点
2) 按下浏览器的后退按钮时滚动到先前访问的锚点。

滚动发生在内容溢出的容器内。

第一个是直截了当的。为了获得第二名,我进行了相当多的谷歌搜索,但并没有真正找到解决方案,尽管我遇到了一些想要做类似事情的人的帖子。

我最终使用了 Ben Almans jQuery hashchange 事件插件和 LocalScroll 来实现所需的结果,代码如下所示:

上面的代码,尽管我在编码方面有点 hack(不是双关语),但在 Firefox、Explorer 和 Opera 中可以满足我的要求。但是,我在 Chrome 和 Safari 中遇到了不同的问题。

在 Chrome 中,基本上,当点击链接时滚动是动画的,但是当按下浏览器的后退按钮时,它只是跳转到锚点而不动画过渡。不过,仔细观察,似乎它确实偶尔会为后退按钮设置动画,但我无法理解为什么它只是在某些时候才会这样做。

在 Safari 中,无论是单击链接还是使用后退按钮,它都会跳转到锚点而不进行动画处理。

在我实现 hashchange 事件解决方案之前,动画在 Safari 中有效,当时代码如下所示:

是否有人对导致 Chrome 和 Safari 出现这些问题的原因有任何想法?正如我所说,我是一名设计师,而不是编码员,这确实在扩展我的能力,所以请随时指出我在上面的代码中犯的任何错误,无论它们是否与手头的问题无关或不。

另外,感谢 Ariel 和 Ben 提供这些出色的插件。

编辑:好的,这是另一件奇怪的事情,当我将网站上传到我在本地运行的测试服务器时,滚动链接点击在 Safari 中有效,即使当我在服务器外运行时完全相同的代码不起作用。无论如何,当按下后退按钮时,Safari 和 Chrome 都不会触发动画,因此问题仍然存在。

0 投票
1 回答
1429 浏览

jquery - jQuery hashchange 插件问题

我对 Ben Alman 的hashchange 事件插件和我的自定义 Tabs_Plugin 有疑问。每次触发 hashchange 事件或单击选项卡链接时,页面都会跳转到页面顶部。

return false通常我只是通过添加或链接来解决这些问题,event.preventDefault但在这种情况下它对我不起作用。

如果我添加return false整个插件停止工作。看看: http: //gearsdigital.com/sandbox/usecase/tabs/

这是相关的插件代码。我已经包含了上面的 hashchange 插件(这里不包含)。

0 投票
1 回答
6131 浏览

jquery - 在 JQuery 移动 UI 中禁用哈希更改控制器并替换为主干.js

我正在使用JQuery Mobile UI,widgit 工具包很好。然而,我也在使用带有一个非常简洁的 hashchange 控制器框架的主干.js。问题是 JQuery Mobile UI 有一个内置的糟糕的哈希更改控制器,它假定您总是希望对每个哈希更改进行 AJAX 查询并从服务器加载内容。

有没有人从 JQuery Mobile UI 中提取小部件框架取得了任何成功?

0 投票
1 回答
355 浏览

html - 防止哈希更改

我有一个嵌入在网页中的第 3 方 Flash 对象,当您单击它时会更改哈希位置。我不希望它这样做,而且我无权访问 Flash 源。有什么办法可以防止这个 flash 对象改变哈希?

0 投票
3 回答
337 浏览

javascript - 当用户使用 JQuery 访问哈希链接 (#something) 时,如何运行 JavaScript 函数?

我有一个 webb 应用程序,http://example.com/app如果用户正在访问,我想显示一个表单http://example/app#add-item

有什么方法可以使用 jQuery 脚本来添加此功能?

我当前的 jQuery 脚本已经有这样的结构:

如何使用这样的东西显示表单:

0 投票
1 回答
4557 浏览

javascript - 如何使用jQuery根据哈希值触发不同的哈希变化函数?

我正在使用Ben AlmanjQuery hashChange事件插件。哈希部分如下所示:

我已经有了解析它的函数getHashPart(key)setHashPart(key).

我想要一个函数,允许只更改散列的特定部分进行注册。我会这样使用它(我猜......):

我将如何使用 jQuery 注册这样的函数?存在类似的东西吗?

谢谢!

0 投票
2 回答
1192 浏览

jquery - IE 8 在使用 jQuery BBQ 重新加载页面时显示原始 ajax 响应

我在分页链接上使用 Ben Almans 的 jQuery BBQ 和 jQuery hashchange 插件。两者都在 Opera 和 Firefox 中按预期工作,但在 IE 8 中却没有(很惊讶,嗯?)。IE 也适用于 ajax、后退按钮和 hashchange,但是当我单击重新加载按钮并显示原始 ajax响应而不是在先前加载的页面中运行它时失败。

所以这是我丑陋的代码和一些关于我试图在我的分页中实现的功能的解释:

1)搜索引擎友好链接(服务器响应html或js取决于客户端的javascript可用性)。

2) JS开启时动态可变的url(使用'#'符号)。

3) 历史记录和后退按钮支持。

4)最小化双重请求(如果相同的内容与html页面一起加载,则不要发出ajax请求)。

JS:

模板(Rails 视图):

AJAX 模板(Rails js 视图):

UPD: IE 在刷新时不发送请求类型标头(或 Rails 无法确定)。所以 Rails 生成的是 JS 视图而不是 HTML。解决者:

有更好的解决方案吗?

0 投票
1 回答
4365 浏览

javascript - 以编程方式更新哈希时禁用 hashchange 侦听器(jQuery BBQ)

为了防止在以编程方式设置 URL 哈希 (#) 时出现反馈循环(与手动更改 URL 相比),我想暂时禁用 hashChange 侦听器。

使用$.bbq.pushState(hash)更新哈希时,我应该如何更改此代码以实际禁用 hashchange 事件?(下面的代码不起作用)

0 投票
2 回答
638 浏览

php - 保存 AJAX 页面状态

有什么方法可以监听 url 中的 hashchanges 并记录事件以在 AJAX 等中使用后退按钮。

使用这样的链接:

和这样的脚本:

我需要尝试保存页面的状态,我看过jQuery 地址插件,但不知道如何实现这个..

0 投票
2 回答
2247 浏览

jquery - jquery:ajax的hashchange问​​题

我正在使用一个 onhashchange 插件,但是当我想通过 ajax 加载页面时,我遇到了一个问题。

这是我的jQuery,

的HTML,

hash问题是在更改后单击链接时,ajax 页面将加载两次或更多次。

我怎样才能解决这个问题?

谢谢。