easyui window拖動越界2中解決方案
1.使用easyui.min.js檔案呼叫easyui控制元件,只需要引用如下檔案即可:
/*---------------------------------------------------------------- // 檔名:window-dragbug-fix.js // 檔案功能描述:修復easyui中panel,dialog,window元件拖拽越界問題 // // // 建立標識:dudw 20141226 // // 修改標識: // 修改描述: // // 修改標識: // 修改描述: //----------------------------------------------------------------*/ var ie = (function() { var undef, v = 3, div = document.createElement('div'), all = div .getElementsByTagName('i'); while (div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0]); return v > 4 ? v : undef; }()); /** * add by cgh * 針對panel window dialog三個元件調整大小時會超出父級元素的修正 * 如果父級元素的overflow屬性為hidden,則修復上下左右個方向 * 如果父級元素的overflow屬性為非hidden,則只修復上左兩個方向 * @param width * @param height * @returns */ var easyuiPanelOnResize = function(width, height) { if (!$.data(this, 'window') && !$.data(this, 'dialog')) return; if (ie === 8) { var data = $.data(this, "window") || $.data(this, "dialog"); if (data.pmask) { var masks = data.window.nextAll('.window-proxy-mask'); if (masks.length > 1) { $(masks[1]).remove(); masks[1] = null; } } } if ($(this).panel('options').maximized == true) { $(this).panel('options').fit = false; } $(this).panel('options').reSizing = true; if (!$(this).panel('options').reSizeNum) { $(this).panel('options').reSizeNum = 1; } else { $(this).panel('options').reSizeNum++; } var parentObj = $(this).panel('panel').parent(); var left = $(this).panel('panel').position().left; var top = $(this).panel('panel').position().top; if ($(this).panel('panel').offset().left < 0) { $(this).panel('move', { left : 0 }); } if ($(this).panel('panel').offset().top < 0) { $(this).panel('move', { top : 0 }); } if (left < 0) { $(this).panel('move', { left : 0 }).panel('resize', { width : width + left }); } if (top < 0) { $(this).panel('move', { top : 0 }).panel('resize', { height : height + top }); } if (parentObj.css("overflow") == "hidden") { var inline = $.data(this, "window").options.inline; if (inline == false) { parentObj = $(window); } if ((width + left > parentObj.width()) && $(this).panel('options').reSizeNum > 1) { $(this).panel('resize', { width : parentObj.width() - left }); } if ((height + top > parentObj.height()) && $(this).panel('options').reSizeNum > 1) { $(this).panel('resize', { height : parentObj.height() - top }); } } $(this).panel('options').reSizing = false; }; /** * add by cgh * 針對panel window dialog三個元件拖動時會超出父級元素的修正 * 如果父級元素的overflow屬性為hidden,則修復上下左右個方向 * 如果父級元素的overflow屬性為非hidden,則只修復上左兩個方向 * @param left * @param top * @returns */ var easyuiPanelOnMove = function(left, top) { if ($(this).panel('options').reSizing) return; var parentObj = $(this).panel('panel').parent(); var width = $(this).panel('options').width; var height = $(this).panel('options').height; var right = left + width; var buttom = top + height; var parentWidth = parentObj.width(); var parentHeight = parentObj.height(); if (left < 0) { $(this).panel('move', { left : 0 }); } if (top < 0) { $(this).panel('move', { top : 0 }); } if (parentObj.css("overflow") == "hidden") { var inline = $.data(this, "window").options.inline; if (inline == false) { parentObj = $(window); } if (left > parentObj.width() - width) { $(this).panel('move', { "left" : parentObj.width() - width }); } if (top > parentObj.height() - height) { $(this).panel('move', { "top" : parentObj.height() - height }); } } }; $.fn.window.defaults.onResize = easyuiPanelOnResize; $.fn.dialog.defaults.onResize = easyuiPanelOnResize; $.fn.window.defaults.onMove = easyuiPanelOnMove; $.fn.dialog.defaults.onMove = easyuiPanelOnMove;
2.若是使用的easyloader.js檔案呼叫控制元件
只需要改三處,我用// //區分出來了!
/** * jQuery EasyUI 1.4 * * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. * * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt * To use it on other terms please contact us at [email protected] * */ (function($) { //--------------------------- function dragCheck(e,targetPos,type){ //工作列的位置 /** * 工作列值 * 0表示工作列在左側 * 1表示工作列在下側 * 2表示工作列在右側 */ var taskBarPos = $("#taskBar").data("taskBarPos"); if(1 == taskBarPos) { wW=document.documentElement.clientWidth; wH=document.documentElement.clientHeight - $("#task_lb_wrap").height(); //減去工作列的高度 } else { wW=document.documentElement.clientWidth - $("#task_lb_wrap").width(); wH=document.documentElement.clientHeight; } tW=$(e.data.target).width();//target width 目標物件的寬度 var left=$(e.data.left)[0]; //目標物件想做偏移量 left tH=$(e.data.target).height();//target height 目標物件的高度 targetPos=$(e.data.target).position(); var top = $(e.data.top)[0]; //目標物件想做偏移量 top if(type=="drop"){ //console.log("螢幕的寬度:" + wW); //console.log("螢幕的高度:" + wH); eL=eT=""; if(left+tW > wW - 20){ //如果window拖到了最右邊 eL = wW-tW-10; } if(top<=0.1){ //如果window拖到了最上面 eT = 0.1; } if(left<=0.1) { //如果window拖到了最左邊 eL = 0.1; } if(top+tH > wH - 20) { //如果window拖到最下邊 eT = wH - tH - 10; } return {eL:eL,eT:eT}; /** * eL:0.1 靠近最左邊 * eT:0.1 靠近最上面 * * eL:wW-tW 靠近最右邊 * eT:-(wH-tH) 靠近最下邊 330? */ } if(targetPos.left>wW-tW-20){ targetPos.left=wW-tW-20; } } //------------------------------- function _1(e) { var _2 = $.data(e.data.target, "draggable"); var _3 = _2.options; var _4 = _2.proxy; var _5 = e.data; var _6 = _5.startLeft + e.pageX - _5.startX; var _7 = _5.startTop + e.pageY - _5.startY; if (_4) { if (_4.parent()[0] == document.body) { if (_3.deltaX != null && _3.deltaX != undefined) { _6 = e.pageX + _3.deltaX; } else { _6 = e.pageX - e.data.offsetWidth; } if (_3.deltaY != null && _3.deltaY != undefined) { _7 = e.pageY + _3.deltaY; } else { _7 = e.pageY - e.data.offsetHeight; } } else { if (_3.deltaX != null && _3.deltaX != undefined) { _6 += e.data.offsetWidth + _3.deltaX; } if (_3.deltaY != null && _3.deltaY != undefined) { _7 += e.data.offsetHeight + _3.deltaY; } } } if (e.data.parent != document.body) { _6 += $(e.data.parent).scrollLeft(); _7 += $(e.data.parent).scrollTop(); } if (_3.axis == "h") { _5.left = _6; } else { if (_3.axis == "v") { _5.top = _7; } else { _5.left = _6; _5.top = _7; } } }; function _8(e) { var _9 = $.data(e.data.target, "draggable"); var _a = _9.options; var _b = _9.proxy; if (!_b) { _b = $(e.data.target); } _b.css({ left: e.data.left, top: e.data.top }); $("body").css("cursor", _a.cursor); }; function _c(e) { $.fn.draggable.isDragging = true; var _d = $.data(e.data.target, "draggable"); var _e = _d.options; var _f = $(".droppable").filter(function() { return e.data.target != this; }).filter(function() { var _10 = $.data(this, "droppable").options.accept; if (_10) { return $(_10).filter(function() { return this == e.data.target; }).length > 0; } else { return true; } }); _d.droppables = _f; var _11 = _d.proxy; if (!_11) { if (_e.proxy) { if (_e.proxy == "clone") { _11 = $(e.data.target).clone().insertAfter(e.data.target); } else { _11 = _e.proxy.call(e.data.target, e.data.target); } _d.proxy = _11; } else { _11 = $(e.data.target); } } _11.css("position", "absolute"); _1(e); _8(e); _e.onStartDrag.call(e.data.target, e); return false; }; function _12(e) { var _13 = $.data(e.data.target, "draggable"); _1(e); if (_13.options.onDrag.call(e.data.target, e) != false) { _8(e); } var _14 = e.data.target; _13.droppables.each(function() { var _15 = $(this); if (_15.droppable("options").disabled) { return; } var p2 = _15.offset(); if (e.pageX > p2.left && e.pageX < p2.left + _15.outerWidth() && e.pageY > p2.top && e.pageY < p2.top + _15.outerHeight()) { if (!this.entered) { $(this).trigger("_dragenter", [_14]); this.entered = true; } $(this).trigger("_dragover", [_14]); } else { if (this.entered) { $(this).trigger("_dragleave", [_14]); this.entered = false; } } }); return false; }; function _16(e) { $.fn.draggable.isDragging = false; _12(e); var _17 = $.data(e.data.target, "draggable"); var _18 = _17.proxy; var _19 = _17.options; if (_19.revert) { if (_1a() == true) { $(e.data.target).css({ position: e.data.startPosition, left: e.data.startLeft, top: e.data.startTop }); } else { if (_18) { var _1b, top; if (_18.parent()[0] == document.body) { _1b = e.data.startX - e.data.offsetWidth; top = e.data.startY - e.data.offsetHeight; } else { _1b = e.data.startLeft; top = e.data.startTop; } _18.animate({ left: _1b, top: top }, function() { _1c(); }); } else { $(e.data.target).animate({ left: e.data.startLeft, top: e.data.startTop }, function() { $(e.data.target).css("position", e.data.startPosition); }); } } } else { //--------------------- var _pos=$(e.data.target); var returnVar=dragCheck(e,$(e.data.target),"drop"); if(returnVar!=undefined){ if(returnVar.eL!=""){ e.data.left=returnVar.eL; } if(returnVar.eT!=""){ e.data.top=returnVar.eT; } } //--------------------- $(e.data.target).css({ position: "absolute", left: e.data.left, top: e.data.top }); _1a(); } _19.onStopDrag.call(e.data.target, e); $(document).unbind(".draggable"); setTimeout(function() { $("body").css("cursor", ""); }, 100); function _1c() { if (_18) { _18.remove(); } _17.proxy = null; }; function _1a() { var _1d = false; _17.droppables.each(function() { var _1e = $(this); if (_1e.droppable("options").disabled) { return; } var p2 = _1e.offset(); if (e.pageX > p2.left && e.pageX < p2.left + _1e.outerWidth() && e.pageY > p2.top && e.pageY < p2.top + _1e.outerHeight()) { if (_19.revert) { $(e.data.target).css({ position: e.data.startPosition, left: e.data.startLeft, top: e.data.startTop }); } $(this).trigger("_drop", [e.data.target]); _1c(); _1d = true; this.entered = false; return false; } }); if (!_1d && !_19.revert) { _1c(); } return _1d; }; return false; }; $.fn.draggable = function(_1f, _20) { if (typeof _1f == "string") { return $.fn.draggable.methods[_1f](this, _20); } return this.each(function() { var _21; var _22 = $.data(this, "draggable"); if (_22) { _22.handle.unbind(".draggable"); _21 = $.extend(_22.options, _1f); } else { _21 = $.extend({}, $.fn.draggable.defaults, $.fn.draggable.parseOptions(this), _1f || {}); } var _23 = _21.handle ? (typeof _21.handle == "string" ? $(_21.handle, this) : _21.handle) : $(this); $.data(this, "draggable", { options: _21, handle: _23 }); if (_21.disabled) { $(this).css("cursor", ""); return; } _23.unbind(".draggable").bind("mousemove.draggable", { target: this }, function(e) { if ($.fn.draggable.isDragging) { return; } var _24 = $.data(e.data.target, "draggable").options; if (_25(e)) { $(this).css("cursor", _24.cursor); } else { $(this).css("cursor", ""); } }).bind("mouseleave.draggable", { target: this }, function(e) { $(this).css("cursor", ""); }).bind("mousedown.draggable", { target: this }, function(e) { if (_25(e) == false) { return; } $(this).css("cursor", ""); var _26 = $(e.data.target).position(); //-------- dragCheck(e,_26); //-------- var _27 = $(e.data.target).offset(); var _28 = { startPosition: $(e.data.target).css("position"), startLeft: _26.left, startTop: _26.top, left: _26.left, top: _26.top, startX: e.pageX, startY: e.pageY, offsetWidth: (e.pageX - _27.left), offsetHeight: (e.pageY - _27.top), target: e.data.target, parent: $(e.data.target).parent()[0] }; $.extend(e.data, _28); var _29 = $.data(e.data.target, "draggable").options; if (_29.onBeforeDrag.call(e.data.target, e) == false) { return; } $(document).bind("mousedown.draggable", e.data, _c); $(document).bind("mousemove.draggable", e.data, _12); $(document).bind("mouseup.draggable", e.data, _16); }); function _25(e) { var _2a = $.data(e.data.target, "draggable"); var _2b = _2a.handle; var _2c = $(_2b).offset(); var _2d = $(_2b).outerWidth(); var _2e = $(_2b).outerHeight(); var t = e.pageY - _2c.top; var r = _2c.left + _2d - e.pageX; var b = _2c.top + _2e - e.pageY; var l = e.pageX - _2c.left; return Math.min(t, r, b, l) > _2a.options.edge; }; }); }; $.fn.draggable.methods = { options: function(jq) { return $.data(jq[0], "draggable").options; }, proxy: function(jq) { return $.data(jq[0], "draggable").proxy; }, enable: function(jq) { return jq.each(function() { $(this).draggable({ disabled: false }); }); }, disable: function(jq) { return jq.each(function() { $(this).draggable({ disabled: true }); }); } }; $.fn.draggable.parseOptions = function(_2f) { var t = $(_2f); return $.extend({}, $.parser.parseOptions(_2f, ["cursor", "handle", "axis", { "revert": "boolean", "deltaX": "number", "deltaY": "number", "edge": "number" }]), { disabled: (t.attr("disabled") ? true: undefined) }); }; $.fn.draggable.defaults = { proxy: null, revert: false, cursor: "move", deltaX: null, deltaY: null, handle: null, disabled: false, edge: 0, axis: null, onBeforeDrag: function(e) {}, onStartDrag: function(e) {}, onDrag: function(e) {}, onStopDrag: function(e) {} }; $.fn.draggable.isDragging = false; })(jQuery);
相關推薦
easyui window拖動越界2中解決方案
1.使用easyui.min.js檔案呼叫easyui控制元件,只需要引用如下檔案即可: /*---------------------------------------------------------------- // 檔名:window
jQuery EasyUI window拖動超出瀏覽器邊界問題修正
easyui-window擴充套件自 $.fn.panel.defaults,用 $.fn.window.defaults 重寫了 defaults。 實際使用的時候,視窗可能會被拖拽到瀏覽器視窗以外的位置,文章在初始化window對視窗的位置進行限制,當拖拽視窗位置超
easyUI列拖動
<script type="text/javascript"> $.extend($.fn.datagrid.methods, { columnMoving: function(jq) { return jq.each(function() { var targ
Win10不能直接拖動檔案開啟的解決辦法
Win10不能直接拖動檔案開啟的解決辦法 大多數人安裝好win10 後,很多軟體的拖拽檔案拖到軟體上直接開啟的功能失效,這時必須要用軟體裡的開啟功能,這是非常麻煩的。經過測試有兩種方法可以解決。 方法1 按Windows鍵+R,開啟“執行”對話方塊:輸入regedit,回車或確
ajax非同步請求中使用window.open會被瀏覽器攔截解決方案
問題剖析:function click_fun(){ window.open("www.baidu.com");//能開啟 $.ajax({ 'url': '${pageContext.request.contextPath}/activity/sav
QML中滑鼠拖動移動ListView中項的位置
在QML開發中,ListView是我們經常用到的控制元件,可以用它給使用者展示出列表,但是往往都是將專案的顯示順序排好後,直接讓ListView顯示出來,亦或者是知道要移動到具體的那一位置,然後調整資料在ListView中的順序來達到要求,現有一種需求,就是用滑鼠拖動某項,
安卓開發 RecycleView 中notifyItemRemoved遇到的那些坑, IndexOutOfIndexException、刪除錯亂,陣列越界等終極解決方案,多人親測可行
當我們在開發過程中要刪除RecycleView中的某個item時,都喜歡notifyItemRemoved方法帶來的動畫效果,然而,會遇到錯亂的坑,主要有三個,如下: 再刪除後面的item,會發生錯
window.open被瀏覽器攔截的解決方案
方案 attr fun click open target win element blog function newWin(url, id) { var a = document.createElement(‘a‘);
WebKit.NET-0.5簡單應用(2)——音量解決方案
word entry imp ssi rsh turn ati window bject 查找WebKit.NET相關文檔,沒有找到音量控制解決方法。換思路進行解決,嘗試用Win32 API進行解決 [DllImport("winmm.dll")] public stat
redis requires ruby version 2.2.2的解決方案
命令 configure .net rap pan -h tro ext download 原文:redis requires ruby version 2.2.2的解決方案 今天在做Redis的Cluster集群的時候,在執行gem install redis時,提示
mysql報錯碼code=exited,status=2的解決方案
b- 官方 重啟失敗 ORC ng- 重啟 inno 死機 失敗 由於電腦死機,導致MySQL無法重啟。 解決方案看官方文檔,設置完後重啟失敗,再把innodb_force_recovery = 1去掉就可以了 https://dev.mysql.com/doc/refma
挖礦病毒 qW3xT.2 最終解決方案
rop mod detail ios tail index $2 ashx hoc 轉自:https://blog.csdn.net/hgx13467479678/article/details/82347473 1,cpu 100%, 用top 查看cpu100
Maven打包時報Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war解決方案
問題現象: 用Maven打包時,報Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war錯誤。 原因分析: 打包時在WebContent/WEB-INF/資料夾下找不到web.xml檔案。 &nb
Failed to resolve: com.android.support:support-annotations:26.0.2的解決方案
在新增依賴的時候,出現如下報錯: 說我缺少了support-annotations:26.0.2的依賴,那麼問題來了,什麼是support-annotations?我的專案裡面用到了嗎? support-annotations註解庫簡介 android-support-anno
理解以太坊的Layer 2擴容解決方案:狀態通道(State Channels)、Plasma 和 Truebit
-賓夕法尼亞州的尼科爾森大橋建設照片(圖源)。羅馬人的工程原理擴充套件至新的應用 對於以太坊來說,2018年是專注底層架構之年。今年很多早期參與者會測試網路極限,並且重新關注以太坊的擴容技術。 以太坊仍然處於起步階段。直到現在,它仍然沒有那麼安全或者可擴充套件。對於任何密切關注以太坊技術的人來說,這都是很
Android RecycleView拖拽超過一屏發生閃屏無法拖拽的bug的解決方案
公司新的需求中需要使用拖拽排序的功能,使用RecycleView加上ItemTouchHelper來實現。實現比較簡單,但是出現了拖拽超過一屏發生閃動,並自動結束了自動排序的問題,以下是功能實現,解決方案在文章最後加粗顯示。 1.初始化RecyclerView,併為Recy
EMA/EHA 作動器控制研究解決方案
概述 隨著未來飛機向高機動性、超高音速及大功率方向的發展,要求機載作動系統具有更高的效能,傳統機載系統中快速響應與高效率之間的矛盾更加突出。同時,飛控系統正在向功率電傳方向發展。隨著電動機技術、材料技術、控制學和精密製造學等的發展,電作動系統得到了極大的發展,未來將成為主要的機載作動系統。
區分VS中解決方案(solution)和工程(project)
在visual studio中,新建一個工程時會發現如下圖的介面: 其中“名稱”代表的是專案(project)的名字,“解決方案名稱”即solution;在“解決方案”這一欄裡可以選擇
關於Android4.x系統支援TLS1.2的解決方案
為Http請求的網路客戶端設定一個特殊的SSLSocketFactory。 這個代理SSLSocketFactory在建立一個Socket連線的時候,會設定Socket的可用的TLS版本。 private static final String[] TLS_
Apache之——命令列啟動出現Failed to open the Apache2.2 Service解決方案
Apache命令列啟動[關閉|重啟]的命令是:httpd -k start[stop|restart] 出現Failed to open the Apache2.2 Service。其實是許可權問題,可以通過以下方法解決: 開啟執行 找到cmd ,右鍵開啟cmd.exe