做項目的時候使用到一個圖片瀏覽的插件jQuery.iviewer,鏈接地址:http://www.jq22.com/jquery-info4580
效果如下:
但是應用的時候出現不能滾動放大縮小的問題,查看代碼的時候發現封裝的滾輪判斷事件有點問題,返回的delta都為0,然后對jquery.iviewer.js的代碼做了一些修改:
1、添加函數addWheelEvent來判斷滾動方式
/**
* nomousewheel
**/
// 兼容所有瀏覽器
addWheelEvent: function (obj,efn){
//判斷IE8還是非IE8
if(document.addEventListener){
//火狐還是非火狐
var oDiv = document.createElement("div");
if(oDiv.onmousewheel === null){
obj.addEventListener("mousewheel",fn,false);
}else{
obj.addEventListener("DOMMouseScroll", fn, false);
}
}else{
obj.attachEvent("onmousewheel", fn);
}
function fn(ev){
ev = ev || window.event;
var d = ev.wheelDelta/120 || -ev.detail/3;
var rs = efn.call(obj,ev,d);
if(rs === false){//禁止滾動條默認事件
ev.preventDefault && ev.preventDefault();
return false;
}
}
},
2、修改_create函數中的滾動事件:注釋'mousewheel.iviewer'方法,改用前面新增的方法addWheelEvent
if (this.options.mousewheel) {
// this.container.bind('mousewheel.iviewer', function(ev, delta) var obj = this.container.get(0);//將jQuery對象轉化為DOM對象 this.addWheelEvent(obj,function(ev,delta)//使用新增方法 {
//this event is there instead of containing div, because
//at opera it triggers many times on div
var zoom = (delta > 0)?1:-1,
container_offset = me.container.offset(),
mouse_pos = {
//jquery.mousewheel 3.1.0 uses strange MozMousePixelScroll event
//which is not being fixed by jQuery.Event
x: (ev.pageX || ev.originalEvent.pageX) - container_offset.left,
y: (ev.pageY || ev.originalEvent.pageX) - container_offset.top
};
me.zoom_by(zoom, mouse_pos);
return false;
});