JAVASCRIPT   10

widget.js

Guest on 25th July 2021 04:25:47 PM

  1.  
  2. function _drag(options) {
  3.         var moveEl = options.moveEl,
  4.                 moveFn = options.moveFn,
  5.                 clickEl = options.clickEl || moveEl,
  6.                 beforeDrag = options.beforeDrag,
  7.                 iframeFix = options.iframeFix === undefined ? true : options.iframeFix;
  8.  
  9.         var docs = [document];
  10.  
  11.         if (iframeFix) {
  12.                 K('iframe').each(function() {
  13.                         // 判断是否跨域
  14. 否跨域
  15.                         var src = _formatUrl(this.src || '', 'absolute');
  16. //.test(src)) {
  17. \/\//.test(src)) {
  18.                                 return;
  19.                         }
  20.                         var doc;
  21.                         try {
  22.                                 doc = _iframeDoc(this);
  23.                         } catch(e) {}
  24.                         if (doc) {
  25.                                 var pos = K(this).pos();
  26.                                 K(doc).data('pos-x', pos.x);
  27.                                 K(doc).data('pos-y', pos.y);
  28.                                 docs.push(doc);
  29.                         }
  30.                 });
  31.         }
  32.  
  33.         clickEl.mousedo// ä¸å“åº”å³é”®ï¼Œå¦åˆ™å¯èƒ½å¯¼è‡´ç‚¹é€‰å³é”®èœå•æ—¶æ— æ³•å–æ¶ˆæ‹–æ‹½
  34. èƒ½å¯¼è‡´ç‚¹é€‰å³é”®èœå•æ—¶æ— æ³•å–æ¶ˆæ‹–æ‹½
  35.                 if(e.button !== 0 && e.button !== 1) {
  36.                         return;
  37.                 }
  38.  
  39.                 e.stopPropagation();
  40.  
  41.                 var self = clickEl.get(),
  42.                         x = _removeUnit(moveEl.css('left')),
  43.                         y = _removeUnit(moveEl.css('top')),
  44.                         width = moveEl.width(),
  45.                         height = moveEl.height(),
  46.                         pageX = e.pageX,
  47.                         pageY = e.pageY;
  48.  
  49.                 if (beforeDrag) {
  50.                         beforeDrag();
  51.                 }
  52.  
  53.                 function moveListener(e) {
  54.                         e.preventDefault();
  55.                         var kdoc = K(_getDoc(e.target));
  56.                         var diffX = _round((kdoc.data('pos-x') || 0) + e.pageX - pageX);
  57.                         var diffY = _round((kdoc.data('pos-y') || 0) + e.pageY - pageY);
  58.                         moveFn.call(clickEl, x, y, width, height, diffX, diffY);
  59.                 }
  60.  
  61.                 function selectListener(e) {
  62.                         e.preventDefault();
  63.                 }
  64.  
  65.                 function upListener(e) {
  66.                         e.preventDefault();
  67.                         K(docs).unbind('mousemove', moveListener)
  68.                                 .unbind('mouseup', upListener)
  69.                         // bind event
  70. ctstart', selectListener);
  71.                         if (self.releaseCapture) {
  72.                                 self.releaseCapture();
  73.                         }
  74.                 }
  75.  
  76.                 // bind event
  77.                 K(docs).mousemove(moveListener)
  78.                         .mouseup(upL// create KWidget class
  79. tstart', selectListener);
  80.  
  81.                 if (self.setCapture) {
  82.                         self.setCapture();
  83.                 }
  84.         });
  85. }
  86.  
  87. // create KWidget class
  88. function // public properties
  89. his.init(options);
  90. }
  91. _extend(KWidget, {
  92.         init : function(options) {
  93.                 var self = this;
  94.                 // public properties
  95.                 self.name = options.name || '';
  96.                 self.doc = options.doc || document;
  97.                 self.win = _getWin(self.doc);
  98.                 self.x = _addUnit(options.x);
  99.                 self.y = _addUnit(options.y);
  100.                 self.z = options.z;
  101.                 self.width = _addUnit(options.width);
  102.                 self.height // pravate properties
  103. ght);
  104.                 self.div = K('<div style="display:block;"></div>');
  105.                 self.options = options;
  106.                 // pravate properties
  107.                 self._alignEl = options.alignEl;
  108.                 if (self.width) {
  109.                         self.div.css('width', self.width);
  110.                 }
  111.                 if (self.height) {
  112.                         self.div.css('height', self.height);
  113.                 }
  114.                 if (self.z) {
  115.                         self.div.css({
  116.                                 position : 'absolute',
  117.                                 left : self.x,
  118.                                 top : self.y,
  119.                                 'z-index' : self.z
  120.                         });
  121.                 }
  122.                 if (self.z && (self.x === undefined || self.y === undefined)) {
  123.                         self.autoPos(self.width, self.height);
  124.                 }
  125.                 if (options.cls) {
  126.                         self.div.addClass(options.cls);
  127.                 }
  128.                 if (options.shadowMode) {
  129.                         self.div.addClass('ke-shadow');
  130.                 }
  131.                 if (options.css) {
  132.                         self.div.css(options.css);
  133.                 }
  134.                 if (options.src) {
  135.                         K(options.src).replaceWith(self.div);
  136.                 } else {
  137.                         K(self.doc.body).append(self.div);
  138.                 }
  139.                 if (options.html) {
  140.                         self.div.html(options.html);
  141.                 }
  142.                 if (options.autoScroll) {
  143.                         if (_IE && _V < 7 || _QUIRKS) {
  144.                                 var scrollPos = _getScrollPos();
  145.                                 K(self.win).bind('scroll', function(e) {
  146.                                         var pos = _getScrollPos(),
  147.                                                 diffX = pos.x - scrollPos.x,
  148.                                                 diffY = pos.y - scrollPos.y;
  149.                                         self.pos(_removeUnit(self.x) + diffX, _removeUnit(self.y) + diffY, false);
  150.                                 });
  151.                         } else {
  152.                                 self.div.css('position', 'fixed');
  153.                         }
  154.                 }
  155.         },
  156.         pos : function(x, y, updateProp) {
  157.                 var self = this;
  158.                 updateProp = _undef(updateProp, true);
  159.                 if (x !== null) {
  160.                         x = x < 0 ? 0 : _addUnit(x);
  161.                         self.div.css('left', x);
  162.                         if (updateProp) {
  163.                                 self.x = x;
  164.                         }
  165.                 }
  166.                 if (y !== null) {
  167.                         y = y < 0 ? 0 : _addUnit(y);
  168.                         self.div.css('top', y);
  169.                         if (updateProp) {
  170.                                 self.y = y;
  171.                         }
  172.                 }
  173.                 return self;
  174.         },
  175.         autoPos : function(width, height) {
  176.                 var self = this,
  177.                         w = _removeUnit(width) || 0,
  178.                         h = _removeUnit(height) || 0,
  179.                         scrollPos = _getScrollPos();
  180.                 if (self._alignEl) {
  181.                         var knode = K(self._alignEl),
  182.                                 pos = knode.pos(),
  183.                                 diffX = _round(knode[0].clientWidth / 2 - w / 2),
  184.                                 diffY = _round(knode[0].clientHeight / 2 - h / 2);
  185.                         x = diffX < 0 ? pos.x : pos.x + diffX;
  186.                         y = diffY < 0 ? pos.y : pos.y + diffY;
  187.                 } else {
  188.                         var docEl = _docElement(self.doc);
  189.                         x = _round// 用position:fixedåŽä¸éœ€è¦æ·»åŠ scrollåæ ‡
  190.  _round(scrollPos.y + (docEl.clientHeight - h) / 2);
  191.                 }
  192.                 // 用position:fixedåŽä¸éœ€è¦æ·»åŠ scrollåæ ‡
  193.                 if (!(_IE && _V < 7 || _QUIRKS)) {
  194.                         x -= scrollPos.x;
  195.                         y -= scrollPos.y;
  196.                 }
  197.                 return self.pos(x, y);
  198.         },
  199.         remove : function() {
  200.                 var self = this;
  201.                 if (_IE && _V < 7 || _QUIRKS) {
  202.                         K(self.win).unbind('scroll');
  203.                 }
  204.                 self.div.remove();
  205.                 _each(self, function(i) {
  206.                         self[i] = null;
  207.                 });
  208.                 return this;
  209.         },
  210.         show : function() {
  211.                 this.div.show();
  212.                 return this;
  213.         },
  214.         hide : function() {
  215.                 this.div.hide();
  216.                 return this;
  217.         },
  218.         draggable : function(options) {
  219.                 var self = this;
  220.                 options = options || {};
  221.                 options.moveEl = self.div;
  222.                 options.moveFn = function(x, y, width, height, diffX, diffY) {
  223.                         if ((x = x + diffX) < 0) {
  224.                                 x = 0;
  225.                         }
  226.                         if ((y = y + diffY) < 0) {
  227.                                 y = 0;
  228.                         }
  229.                         self.pos(x, y);
  230.                 };
  231.                 _drag(

Raw Paste


Login or Register to edit or fork this paste. It's free.