您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fixes the jQuery UI Draggable bug revolving around dragged item getting offset when scrolling.
// ==UserScript== // @name OutOfMilk.com Category-List Manager Scrolling Fix // @version 0.1.4 // @description Fixes the jQuery UI Draggable bug revolving around dragged item getting offset when scrolling. // @namespace https://gf.qytechs.cn/en/users/15562 // @author Jonathan Brochu (https://gf.qytechs.cn/en/users/15562) // @license GPLv3 or later (http://www.gnu.org/licenses/gpl-3.0.en.html) // @include http://outofmilk.com/ManageCategories.aspx* // @include http://www.outofmilk.com/ManageCategories.aspx* // @include https://outofmilk.com/ManageCategories.aspx* // @include https://www.outofmilk.com/ManageCategories.aspx* // @grant none // ==/UserScript== /*** * History: * * 0.1.4 Changes made: * - Updated script for use with the repository [gf.qytechs.cn]. * - No change made to the code. * (2015-09-14) * 0.1.3 Change made: * - Added outofmilk.com as a possible domain for include URLs. * (2015-04-02) * 0.1.2 Changes made: * - Fixed previously noted z-index issue. Now, everytime a category * name is being dragged it is made the topmost element on the page. * This is not the most elegant of solutions (i.e. re-check all * z-indices everytime), but it is the best we can do considering * we don't have control over the page. * (2013-04-05) * 0.1.1 Changes made: * - Removed the unneeded library @include (jQuery v1.8.2), since now * it conflicts anyway with the (new?) version of the library being * used on the page. * - Tweaked @include to allow for URL params and anchors. * NOTE: The (probably updated) version of the jQuery library used by * the site/page recently introduced issues with the z-order of * items being dragged (i.e. the dragged item might disappear * when scrolling, but it can be made to re-appear after being * dragged all-the-way to the bottom and then back up the page). * This issue still needs further investigation. * (2013-04-02) * 0.1.0 First implementation. (2013-02-17) * */ (function() { // constants var USERSCRIPT_NAME = 'OutOfMilk.com Category-List Manager Scrolling Fix'; // reference some outside objects window.console = window.console || (function() { if (typeof(unsafeWindow) == 'undefined') return { 'log': function() {} }; return unsafeWindow.console; })(); // re-implement jQuery.ui.draggable if (jQuery.ui.draggable) { jQuery.ui.draggable.prototype._mouseDrag = function(event, noPropagation) { // Compute the helpers position /* --> */ /* Added: */ var currentRelativeOffset = this._getRelativeOffset(); this.position = this._generatePosition(event); this.positionAbs = this._convertPositionTo("absolute"); // Call plugins and callbacks and use the resulting position if something is returned if (!noPropagation) { var ui = this._uiHash(); if(this._trigger("drag", event, ui) === false) { this._mouseUp({}); return false; } this.position = ui.position; } if(!this.options.axis || this.options.axis !== "y") { /* Original line: * this.helper[0].style.left = this.position.left + "px"; * * Updated line, using currentRelativeOffset: */ /* --> */ this.helper[0].style.left = this.position.left + (this.offset.relative.left - currentRelativeOffset.left) + "px"; } if(!this.options.axis || this.options.axis !== "x") { /* Original line: * this.helper[0].style.top = this.position.top + "px"; * * Updated line, using currentRelativeOffset: */ /* --> */ this.helper[0].style.top = this.position.top + (this.offset.relative.top - currentRelativeOffset.top) + "px"; } if($.ui.ddmanager) { $.ui.ddmanager.drag(this, event); } return false; }; } // Unbind from previous draggable implementation $(".draggableItem").draggable("destroy"); // Rebind to new implementation (as done in 'js/methods/categories/ManageCategories.js?v=...') $(".draggableItem").draggable({ revert: true }); // 2013-04-04: Force every newly-clicked span.draggableItem to be the topmost item // Reference: http://stackoverflow.com/questions/4755631/css-javascript-make-element-top-most-z-index-top-most-modal-element try { $('span.draggableItem').each(function(){ this.addEventListener('mousedown', function(){ var highest_index = 0; $('[z-index]').each(function() { if ($(this).attr('z-index') > highest_index) { highest_index = $(this).attr('z-index'); } }); $(this).attr('z-index', highest_index + 1); }, false); }); } catch(err) { console.log(err); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址