- 浏览: 448441 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
ubuntu的疯狂:
推荐一份完整的教程:http://blog.ddlisting ...
Emberjs学习 -
ptz19:
请问,如果把合并前的文件,不要dest 目标目录来。如: js ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
楼主,还有个问题,<a href="" ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
感谢楼主,用到了您的代码, 但现在好像有改动 否则会报错:修改 ...
gulp下静态资源的合并、压缩、MD5后缀 -
denverj:
感谢分享~
Emberjs学习
(function($){ var hashchange = 'hashchange', DOC = document, documentMode = DOC.documentMode, supportHashChange = ('on' + hashchange in window) && ( documentMode === undefined || documentMode > 7 ); $.fn[ hashchange ] = function(callback){ return callback? this.bind(hashchange, callback ) : this.trigger( hashchange); }; $.fn[ hashchange ].delay = 50; if(!supportHashChange){ //$.log("不支持hashchange,使用iframe加定时器模拟") var iframe, timeoutID, html = '<!doctype html><html><body>{0}</body></html>'; if( $.fn[ hashchange ].domain){ html = html.replace("<body>","<script>document.domain ="+ $.fn[ hashchange ].domain +"</script><body>" ) } function format(html,hash){ return html.replace('{0}', hash); } function getHash ( url) {//用于取得当前窗口或iframe窗口的hash值 url = url || DOC.URL; return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); } function getHistory(){ return getHash(iframe.location); } function setHistory(hash, history_hash){ var doc = iframe.document; if ( hash !== history_hash ) {//只有当新hash不等于iframe中的hash才重写 //用于产生历史 doc.open(); doc.write(format(html, hash)); doc.close(); } } var last_hash = getHash(), history_hash, hash = ""; $.event.special[ hashchange ] = { setup: function() { $(function(){ if (!iframe) { var el = $('<iframe tabindex="-1" style="display:none" width="0" height="0" />').appendTo( document.body ); el.one("load",function(){ iframe = this.contentWindow; var doc = iframe.document; doc.open(); doc.write(format(html, last_hash)); doc.close(); timeoutID = setInterval(poll, $.fn[ hashchange ].delay); }); function poll() { var hash = getHash(),//取得主窗口中的hash history_hash = iframe.document.body.innerText;//取得现在iframe中的hash if(hash !== last_hash){//如果是主窗口的hash发生变化 setHistory(last_hash = hash, history_hash ); $(window).trigger(hashchange,[hash] ); }else if(history_hash !== last_hash){//如果按下回退键, location.href = location.href.replace( /#.*/, '' ) + history_hash; } } } }); }, teardown: function(){ if(!iframe){ clearTimeout(timeoutID); $(iframe).remove(); iframe = null; } } }; } })(jQuery);
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="../jquery-1.8.3.min.js"></script> <script type="text/javascript" src="hashchange.js"></script> </head> <body> <a href="#a?id=10">aaaa</a> <a href="#b?id=11&bb=11">bbbb</a> <a href="#c?id=12&cc=11">cccc</a> <div id="log" width="300px;" height="200px" style="border:1px solid #ccc;"></div> <script> $(function(){ $(window).hashchange(function(e,hash){ $('#log').append('<div>' + document.location + '【<strong>'+hash+ '</strong>】</div>'); }); $(window).hashchange(); }); </script> </body> </html>
发表评论
-
webpack简单打包PC网站前端资源
2016-02-23 14:30 1691:arrow: 1. 纯前端的打包输出,比较有局限 2 ... -
grunt构建基于seajs的网站实现
2015-06-16 16:49 1127Gruntfile.js module.exports ... -
js平滑滚动回到顶部
2015-06-10 11:42 4015优先使用 requestAnimationFrame实现。 实 ... -
fis-amd 的使用与修改
2015-05-26 16:14 3957https://github.com/fex-team/fis ... -
scrollMagic 视差与滚动动画GSAP
2015-05-19 18:14 4440scrollMagic(https://github.com/ ... -
skrollr-视差滚动动画插件
2015-05-19 14:18 1738skrollr ( https://github.com/Pr ... -
stellar插件的使用
2015-05-18 17:30 1785<!DOCTYPE html> < ... -
icon font VS svg font
2015-05-14 15:21 1211关于字体图标和SVG图标,CSS TRICK网站有较好的说明。 ... -
gulp下静态资源的合并、压缩、MD5后缀
2015-05-05 15:48 22631var gulp = require('gulp'); ... -
DOMContentLoaded VS onload VS onreadystatechange
2015-04-30 14:50 70081. DOMContentLoaded 在页面html、scr ... -
简单的css3全屏滚动
2015-04-27 16:41 1450<!DOCTYPE html> <ht ... -
jquery插件treetable 的使用
2015-04-20 16:12 11997插件的文档写得不是很好,为了能弄出异步加载的功能,小折腾了一番 ... -
sublime 侧边栏字体大小修改
2015-04-16 10:46 3834【转载自:http://jekhy.com ... -
移动端的“点透”问题
2015-04-15 14:13 1659移动端的“点透”问题,这篇博文有较好的说明: http://w ... -
scheme缺少,ie的bug
2015-04-01 17:34 532在页面上定位一个资源(JS/CSS/image),通常的url ... -
大整数相加
2015-03-26 22:18 936function repeatStr(ch, n){ ... -
getBoundingClientRect 跨浏览器实现
2015-03-18 18:30 1105<head> <script ... -
window.name 跨域
2015-03-18 17:29 898window.name跨域的基础是:iframe页面在其url ... -
window.name 跨域
2015-03-18 17:27 1window.name跨域的基础是:iframe页面在其ur ... -
HTML History API
2015-03-13 18:05 1131// 替换当前浏览器history的最后一项记录。 hi ...
相关推荐
《jQuery HashChange插件修改详解》 在Web开发中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互等任务。而HashChange事件是HTML5引入的一个新特性,允许开发者监听浏览器URL...
本文将深入探讨jQuery HashChange插件的工作原理、使用方法以及实际应用。 一、哈希change事件的由来 在HTML5中,浏览器原生支持了`window.onhashchange`事件,当URL的哈希部分发生变化时,这个事件会被触发。然而...
在某些浏览器中,如 IE6、7、8,原生并不支持 hashchange 事件,因此这个插件通过定时检查 URL hash 来模拟这一事件,确保在这些浏览器中也能正常监听 hash 的变化。这使得开发者无需担心兼容性问题,可以在各种...
9. SEO友好:虽然滑动页面可能会影响爬虫抓取内容,但优秀的插件会提供解决方案,如使用`hashchange`事件实现SEO友好的锚点链接,或提供静态版本供搜索引擎抓取。 10. 兼容性测试:在实际应用中,必须对插件进行...
4. **兼容性处理**:考虑到非HTML5兼容的浏览器,插件可能包含了一套备选方案,如使用hashchange事件或传统页面跳转,确保在旧版本浏览器中也能正常工作。 5. **事件绑定**:为了方便开发者在状态变化时执行特定...
通过popstate或hashchange进行历史记录管理。 在不重新加载的情况下替换页面的URL,并在较旧的浏览器上回退到Hashchange。 该插件是MooTools 一部分 。 建造 通过构建,需要和已注册到Packager packager ...
对于不支持`hashchange`事件的老版本浏览器,如Safari 4和IE6、7,插件会自动切换到备用机制,如使用`setInterval`监测`location.hash`或使用`iframe`。 3. **初始化和事件处理**: 开发者可以通过调用`$.history....
8. **滚动事件**:fullPage插件触发多种滚动相关的事件,如`scroll`、`resize`和`hashChange`,你可以监听这些事件并作出相应处理,比如更新页面内容或状态。 9. **API方法**:除了初始化配置,fullPage还提供了...
此外,为了实现URL预览,项目可能利用了浏览器的`window.location`对象来获取和设置当前URL,以及监听`hashchange`或`popstate`事件来实现URL的实时更新。如果涉及到路由管理,可能还会用到`history.pushState`和`...
在实际项目中,还可以考虑使用jQuery的插件,如`History.js`或`jQuery BBQ`,它们提供了更完善的`hash`管理和历史记录支持,简化了开发过程。在提供的`cyzshenzhen-jquery_history_demo-master`压缩包中,可能包含了...
### 自定义jQuery选项卡插件实例详解 #### 一、引言 在Web开发中,选项卡组件是一种常见的用户界面元素,它可以帮助用户在有限的空间内管理多个内容区块。使用jQuery这样的JavaScript库来创建选项卡插件,可以极大...
- **主题支持**:继承自jQuery UI,该插件能够无缝地与各种jQuery UI主题搭配,确保与页面其他组件的视觉一致性。 - **事件处理**:提供了丰富的事件接口,如`select`、`deselect`等,方便开发者根据用户操作进行...
这通常涉及到使用条件语句检测浏览器是否支持History API,如果不支持,则可能使用hashchange事件或其他的回退策略来模拟类似的行为。 **Hashchange事件**:在老版本的浏览器中,可以利用URL的哈希部分(#后面的...
window.dispatchEvent(new HashChangeEvent('hashchange')); ``` 现在,我们来看如何解决Ajax前进/后退问题。当使用Ajax加载新内容时,浏览器的历史记录不会自动更新,导致前进/后退功能失效。为此,可以使用`push...
个人把常用的一些jquery插件做了一个demo,里面有jquery.dropkick-1.0.0.js、slider.js、fullcalendar-1.5.2、jquery.grumble.js、jcarousellite_1.0.1.js(已修改)、jquery.jqzoom.js、jquery.thickbox.js、jquery...
安装vue add router核步骤:步骤一:使用vue-router插件,router.js步骤二:创建Router实例,router.js步骤三:在根组件上添加该实例,main.js步骤四:添加路由视图,App.vue 在安装Vue Router时,我们需要使用vue ...
当哈希值改变时,浏览器会触发hashchange事件,插件可以通过监听这个事件来处理页面的跳转。 3. **推送给服务器的数据**:可能使用了`fetch`或`XMLHttpRequest`发送HTTP请求,与服务器进行数据交互,更新页面内容。...
- **Ben Alman 的BBQ & hashchange**:提供的工具集,支持URL哈希变化的监听。 #### 测试与优化工具 - **Unit Testing**:单元测试是软件开发过程中不可或缺的一环。 - **QUnit**:简洁易用的JavaScript单元测试...
`jQuery Scroll To` 是一个流行的 JavaScript 插件,它允许开发者实现平滑、流畅的页面滚动效果。当用户点击带有哈希值(如 `#section1`)的链接时,页面会优雅地滚动到对应的位置,而不是立即跳转。这种效果在现代...