问题标签 [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.
jquery - jQuery hash changed wildcard
I'm currently building a dynamic website based on jQuery en hashChanged. Currently I use this code on document.ready:
Now I'm building a video galery, so i wanted to use URLs like these:
So video.php need to be loaded in the content div en i need to get the video with ID 12485 from the DB. But how can I cover these hash pages in javascript?
Thank you!
javascript - Javascript/jQuery 仅在浏览器后退/前进按钮单击时检测哈希更改
是否可以仅在浏览器历史记录更改(即后退或前进按钮)时检测到 hashchange?
我已经看到了 onBeforeUnload 事件,但是这个事件不会在哈希更改时触发,因为窗口没有卸载。
hashchange 事件显然会在哈希更改时触发。有什么修复吗?最好没有插件。我看过 jQuery 历史插件,但我正在寻找最简单的解决方案。
谢谢您的帮助。
javascript - Jquery mobile - onhashchange 问题
我$.mobile
在我的应用程序中使用。我必须创建自己的路由系统。我绑定观察者hashchange
并从中提取有趣的数据location.hash
。我有一个问题 -如果它有斜线(例如 from to并在黄色框中表示),请jQuery.mobile
删除它。location.hash
'lalal/#controller/action/param'
'lalal/controller/action/param'
$.mobile
Error Loading Page
我首先尝试取消绑定现有的“hashchange”,但随后页面不会自动加载(我需要的)。
如何防止散列的变化,但 jQuery 仍然必须自动加载页面(例如通过在元素中声明的 ID data-role='page'
)?. 下面是我的路由器类的片段:(Router.load
不变location.hash
)
php - 根据不在哈希中的文件名通过 hashchange + jquery 加载内容
我正在使用 jquery + ben alman 的 hashchange 插件。以下是获取哈希名称并加载内容的标准方法
但是有没有什么办法可以通过获取点击函数上分配的其他变量或通过 php 排序来做到这一点?
我正在与一个多艺术家作品集网站合作,该网站向图像分发独特的三四字母代码
我想通过独特的网址提供这些图片。由于许多原因,这必须通过 ajax。
我很难添加其他 ajax 历史选项,因为这个页面已经在使用 ajax 分页(加载这个内容)和很多 htaccess url modrewrites。
我想这可能是不可能的。
这是我当前的代码
和我的 html / php :
只要来自href
attr 的图像加载到#content
div 中,并且来自id
attr 的散列作为散列添加到 url 和页面标题,这就是有效的,但我缺乏任何机制来组合 click 和 hashchange 函数,这样每个哈希实际上对应于图像。
javascript - 当用户单击同一链接时,Hashchange 不会触发
我正在创建一个 HTML 和 Javascript 客户端,用于在与 REST API 对话的浏览器中运行。我正在使用RouteMap来设置我的 URL。所以我保留了一个像这样的约定
我只设置了一条路由,并且在绑定到 hashchange 的函数中获取这些参数。大多数事情都很好。只有两个问题,我因此而陷入困境。
- 如果用户两次点击同一个链接,hashchange 事件不会触发。是的,哈希没有改变,所以很明显它不会触发。但是应该有一些可以做的事情,我错过了。
- 如果我在 UI 中更改了一些我不想更改哈希链接的内容(例如显示新的 div 并隐藏一些),我会丢失该历史记录并且无法通过正确单击后退按钮返回。
任何帮助将不胜感激。
events - 主干路由器/历史记录中带有后退按钮的 Hashchange 事件
我正在使用以下系统配置:
Ubuntu 11.04 上的 Chromium 14.0.835.202 使用 Backbone 0.5.3
定义了以下路由和回调的主干路由器:
在这个系统中,我有以下行为:
- 如果我访问“根”(家),则会调用“handlerRoot”。好的,这正是我所期待的。
- 如果我转到“第二”(#second),则会调用“handlerSecond”。好的,这正是我所期待的。
- 如果我在'root',然后我进入'second',一旦我点击后退按钮,由于按下后退按钮,两个回调被调用:第一个被称为'handlerSecond',和下一个'handlerRoot'。实际上,在这里我期望只调用“handlerRoot”,因为当我按下后退按钮时,我作为用户的意图是返回上一页。
- 如果我正在执行以下路径:'root' -> 'second' -> 'root' -> 'second',并且在 'second' (最后一个)中一次,我单击 Back 按钮,作为此推送的结果称为以下回调:第一个“handlerSecond”,下一个“handlerRoot”,下一个“handlerSecond”,最后是“handlerRoot”。就像之前历史中与 URL 路径关联的所有回调都被调用(以相反的顺序)。同样,我的期望只是被称为“handlerRoot”(出于同样的原因,我将从“第二”回到根,我对所有历史都不感兴趣)。
我正在观看 History 的 Backbone.js 代码,我看到它正在使用“onhashchange”事件(对于兼容的浏览器)。因此,我在浏览器控制台中手动设置了以下内容:
我用这个配置做了同样的实验(1)、(2)、(3)和(4)。实际上,以前历史记录中的所有 URL 路径都是以相反的顺序打印的。例如在 (3) 中,当我按下后退按钮时,首先打印“second”的 URL,然后打印“root”的 URL。因此,Backbone 行为确实是“onhashchange”行为。
我的问题是:
哪一个是这种行为的原因(它有什么用)?例如,如果我的回调只是切换视图,在示例 (4) 中,我切换视图四次,而我真的只需要切换一次视图(更改在“秒”中呈现的视图在“根”中呈现的视图)。有没有办法得到这种行为?
提前致谢!
javascript - IE9 在使用浏览器的后退按钮时不会更新 iFrame 中的 window.location.href。解决方法?
我正在使用onhashchange
javascript 事件向用户显示一系列“屏幕”,而无需为每个屏幕重新加载页面。将此页面放置在 iFrame 中时,IE9 不会触发 hashchange 事件,并且 window.location.href 不会按预期更新。
我的期望:每当用户点击“继续”进入另一个屏幕时,URL 的哈希部分就会改变。当使用浏览器的后退和前进按钮时,浏览器会更改哈希值。这被 javascript 中的 onhashchange 事件处理程序捕获,并显示正确的内容。
我观察到的是:所有支持 onhashchange 事件(包括 IE9)的浏览器中的行为都符合预期。但是,当相关页面加载到 iFrame 中时,IE9 中的行为会发生变化。当我在 IE9 中单击浏览器的后退按钮时,会发生以下情况:
- 不会触发 hashchange 事件。
- window.location.href 和 window.location.hash 保持与单击后退按钮之前相同
- 如果我右键单击 iFrame 并查看 iFrame 的属性,URL 将显示更改后的哈希。即属性窗口中的 URL 与 window.location.href 不匹配
玩具示例:因为其他人报告没有看到这种行为,我在这里创建了一个玩具示例:http: //jonemo.de/stuff/ie9iframe/test.html。单击state1
,然后单击state2
,单击浏览器的返回按钮。Current state of iFrame
应该读取state1
,但在我的 IE9 中,它会state2
在这一系列操作之后读取。我的 IE 是 9.0.8112.16421 版本,这是正常的发布版本。
如何在 IE9 中的 iFrame 内检测页面上后退按钮的使用?持有 iFrame 的页面和 iFrame 内部的页面可以位于不同的域中。我可以完全控制 iFrame 中的页面,并且可以在包含 iFrame 的页面上放置任意 Javascript。
javascript - hashchange 函数的例外 - 浏览器历史记录回来了?
我不知道我应该怎么称呼这个问题……这个问题的标题根本没有任何意义,我知道!
以下案例:我有一个单页布局,用户向下滚动。我有一些部分.layer
,当在视口内时,应将地址栏中的哈希更改为其id
. 因此,例如在.layer#one
视口内,地址栏中的 url 看起来像这样 www.whatever.com/#!/one
这工作得很好,就像我想要的一样。我使用这种语法的原因!/
是,如果我只是将位置设置为hash
仅滚动行为,那将是错误的,因为浏览器试图坚持哈希位置。
现在的问题是,我希望能够使浏览器历史记录返回按钮工作!hashchange
使用 jQuery 自带的函数,
这通常会相当简单……</p>
我遇到的唯一问题是,如果在滚动时更改哈希值,也会触发 hashchange 函数。所以它会再次跳转或停留在浏览器中的当前位置。知道我该如何解决这个问题吗?我可能可以在滚动时取消绑定 hashchange,对吧?但这是最好的解决方案吗?
jquery - scollTo + hashchange:奇怪的后退/前进行为
我正在尝试将 Ariel Fiesler 的 scrollTo 插件与 Ben Alman 的 hashchange 插件结合使用。基本上,我滚动到页面上的不同 DIV,并尝试使用 hashchange 来实现后退/前进按钮功能。
它有点工作,但它是不一致的。每隔一个向后或向前,它就会滚动。但在其他人身上,它只是跳到滚动位置。所以你会得到类似的东西:1. 跳跃,2. 滚动,3. 跳跃,4. 滚动等等。
这是现场网站的链接:http ://www.6by7.net/
我正在使用的插件:http:
//flesler.blogspot.com/2007/10/jqueryscrollto.html
http://benalman.com/projects/jquery-hashchange-plugin/
javascript - Jquery + 最新的哈希更改监听器?
我正在使用http://benalman.com/projects/jquery-hashchange-plugin/来监听我的项目中的哈希变化,但他的插件已经过时并且不适用于新版本的浏览器,例如 Firefox 9 和 IE9。
在谷歌和这里搜索,但找不到任何其他插件。
还是仅使用此代码针对大多数浏览器就足够了?
编辑:
似乎这些浏览器存在问题,console.log()
与 hashchange 无关。删除所有console.log
输出后,它按预期工作