⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsslider.js

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JS
📖 第 1 页 / 共 3 页
字号:
    document["onmousemove"] = peer._oldOnmousemove;
    document["onmouseup"] = peer._oldOnmouseup;
  }
  var dragElementID = peer._dragElement.id;
  peer._dragElement = undefined;
  peer._dragX = undefined;
  peer._dragY = undefined;
  peer._dragLeft = undefined;
  peer._dragTop = undefined;
  if (!document.all)
  {
    JSSlider.prototype.currentInstance = false;
  }
  peer._dragInProgress = false;
  if (event.cancelable)
  {
    // or else the browser thinks you are dragging links or images around
    event.stopPropagation();
    event.preventDefault();
  }
  peer._correctMarkerOrdering(dragElementID);
}

JSSlider.prototype._correctMarkerOrdering = function(dragElementID)
{
  if (this._rangeSlider)
  {
    var startMarkerID = this._id + JSSlider._ID_START_MARKER;
    var endMarkerID = this._id + JSSlider._ID_END_MARKER;
    var startMarker = document.getElementById(startMarkerID);
    var endMarker = document.getElementById(endMarkerID);
    var markersReversed = false;
    if (this._horizontalLayout)
    {
      var startLeft = parseInt(startMarker.style.left);
      var endLeft = parseInt(endMarker.style.left);
      if (endLeft < startLeft)
      {
        markersReversed = true;
      }
    }
    else
    {
      var startTop = parseInt(startMarker.style.top);
      var endTop = parseInt(endMarker.style.top);
      if (endTop > startTop) // remember that zero is at the bottom
      {
        markersReversed = true;
      }
    }
    
    if (markersReversed)
    {
      // correct the tab order of the markers in case they are reversed
      this.setMarkerPercent(this._startPercent, this._endPercent, false);
      
      // put the correct marker in focus
      if (dragElementID == startMarkerID)
      {
        endMarker.focus();
      }
      else
      {
        startMarker.focus();
      }
    }
  }
}

JSSlider.prototype._recalculatePercentages = function()
{
  var min, max, length, newStartPercent0To100, newEndPercent0To100;
  if (this._horizontalLayout)
  {
    min = this._widgetMargin + this._trackImageDimension;
    max = this._widgetWidth - min;
    length = max - min;
    newStartPercent0To100 = ( parseInt(document.getElementById(this._id +
      JSSlider._ID_START_MARKER).style.left) - min +
      Math.floor(0.5*this._horizontalMarkerWidth) ) * 100.0 / length;
    if (this._rangeSlider)
    {
      newEndPercent0To100 = ( parseInt(document.getElementById(this._id +
        JSSlider._ID_END_MARKER).style.left) - min +
        Math.floor(0.5*this._horizontalMarkerWidth) ) * 100.0 / length;
    }
  }
  else
  {
    min = this._widgetMargin + this._trackImageDimension;
    max = this._widgetHeight - min;
    length = max - min;
    newStartPercent0To100 = 100.0 - 100.0 * ( parseInt(
      document.getElementById(this._id +
      JSSlider._ID_START_MARKER).style.top) - min +
      Math.floor(0.5*this._verticalMarkerHeight) ) / length;
    if (this._rangeSlider)
    {
      newEndPercent0To100 = 100.0 - 100.0 * ( parseInt(
        document.getElementById(this._id +
        JSSlider._ID_END_MARKER).style.top) - min +
        Math.floor(0.5*this._verticalMarkerHeight) ) / length;
    }
  }
  
  // respect that the start and end markers might cross over in updating the range track
  if (this._rangeSlider)
  {
    if (newStartPercent0To100 > newEndPercent0To100)
    {
      var swapTemp = newStartPercent0To100;
      newStartPercent0To100 = newEndPercent0To100;
      newEndPercent0To100 = swapTemp;
    }
  }
  
  this._startPercent = newStartPercent0To100;
  this._endPercent = newEndPercent0To100;
  this._repositionRangeBar();
}

JSSlider.prototype._repositionRangeBar = function()
{
  if (this._rangeSlider)
  {
    var rangeBar = document.getElementById(
      this._id + JSSlider._ID_RANGE_BAR);
    var startAndSize = this._getRangeBarStartAndSize();
    if (this._horizontalLayout)
    {
      rangeBar.style.left = startAndSize["start"] + "px";
      rangeBar.style.width = startAndSize["size"] + "px";
    }
    else
    {
      rangeBar.style.top = startAndSize["start"] + "px";
      rangeBar.style.height = startAndSize["size"] + "px";
    }
  }
}

JSSlider.prototype._broadcastPositionChange = function()
{
  if (this._changeListener)
  {
    try
    {
      eval(this._changeListener + "(" + this._startPercent + "," + this._endPercent + ")", 1);

     }
    catch (problem)
    {
      //TODO log problems
    }
  }
}

JSSlider.prototype._initializeWidgetDimensions = function(widgetLength)
{
  var widgetThickness = 2*this._widgetMargin + this._trackImageDimension;
  if ( (this._numTicks > 0) || (this._customImage != null) )
  {
    widgetThickness += this._ticksThickness + this._ticksMargin;
  }
  
  if (this._horizontalLayout)
  {
    this._widgetWidth = widgetLength;
    this._widgetHeight = widgetThickness;
  }
  else // vertical layout
  {
    this._widgetWidth = widgetThickness;
    this._widgetHeight = widgetLength;
  }
}

JSSlider.prototype._getMinimumMarkerHorizontalLeft = function()
{
  var minimumLeft = this._widgetMargin + this._trackImageDimension -
    Math.floor(0.5*this._horizontalMarkerWidth);
  return minimumLeft;
}

JSSlider.prototype._getMaximumMarkerHorizontalLeft = function()
{
  var maximumLeft = this._widgetWidth - this._widgetMargin -
    this._trackImageDimension - Math.floor(0.5*this._horizontalMarkerWidth);
  return maximumLeft;
}

JSSlider.prototype._getMinimumMarkerVerticalTop = function()
{
  var minimumTop = this._widgetMargin + this._trackImageDimension -
    Math.floor(0.5*this._verticalMarkerHeight);
  return minimumTop;
}

JSSlider.prototype._getMaximumMarkerVerticalTop = function()
{
  var maximumTop = this._widgetHeight - this._widgetMargin -
    this._trackImageDimension - Math.floor(0.5*this._verticalMarkerHeight);
  return maximumTop;
}

/**
 * Only call this method if in a horizontal layout.
 */
JSSlider.prototype._ensureMarkerLeftInRange = function(desiredLeft)
{
  var minimumLeft = this._getMinimumMarkerHorizontalLeft();
  if (desiredLeft < minimumLeft)
  {
    return minimumLeft;
  }
  
  var maximumLeft = this._getMaximumMarkerHorizontalLeft();
  if (desiredLeft > maximumLeft)
  {
    return maximumLeft;
  }
  
  return desiredLeft;
}

/**
 * Only call this method if in a vertical layout.
 */
JSSlider.prototype._ensureMarkerTopInRange = function(desiredTop)
{
  var minimumTop = this._getMinimumMarkerVerticalTop();
  if (desiredTop < minimumTop)
  {
    return minimumTop;
  }
  
  var maximumTop = this._getMaximumMarkerVerticalTop();
  if (desiredTop > maximumTop)
  {
    return maximumTop;
  }
  
  return desiredTop;
}

JSSlider.prototype._getMarkerLeft = function(percent0To100)
{
  if (this._horizontalLayout) // variable
  {
    var min = this._widgetMargin + this._trackImageDimension;
    var max = this._widgetWidth - min;
    var length = max - min;
    var position = min + length*percent0To100/100.0 -
      Math.floor(0.5*this._horizontalMarkerWidth);
    return position;
  }
  else // constant
  {
    var effectiveTickThickness = 0;
    if ( (this._numTicks > 0) || (this._customImage != null) )
    {
      effectiveTickThickness = this._ticksThickness + this._ticksMargin;
    }
    var trackInset; // the track is the center line along the track
    if (this._ticksBeforeTrack)
    {
      trackInset = this._widgetMargin + effectiveTickThickness +
                   0.5*this._trackImageDimension;
    }
    else
    {
      trackInset = this._widgetMargin + 0.5*this._trackImageDimension;
    }
    return trackInset - Math.floor(0.5*this._verticalMarkerWidth);
  }
}

JSSlider.prototype._getMarkerTop = function(percent0To100)
{
  if (this._horizontalLayout) // constant
  {
    var effectiveTickThickness = 0;
    if ( (this._numTicks > 0) || (this._customImage != null) )
    {
      effectiveTickThickness = this._ticksThickness + this._ticksMargin;
    }
    var trackInset; // the track is the center line along the track
    if (this._ticksBeforeTrack)
    {
      trackInset = this._widgetMargin + effectiveTickThickness +
                   0.5*this._trackImageDimension;
    }
    else
    {
      trackInset = this._widgetMargin + 0.5*this._trackImageDimension;
    }
    return trackInset - Math.floor(0.5*this._horizontalMarkerHeight);
  }
  else // variable
  {
    var min = this._widgetMargin + this._trackImageDimension;
    var max = this._widgetHeight - min;
    var length = max - min;
    var position = min + length*(100.0-percent0To100)/100.0 -
      Math.floor(0.5*this._verticalMarkerHeight);
    return position;
  }
}

JSSlider.prototype._getRangeBarStartAndSize = function()
{
  var start, size;
  if (this._horizontalLayout)
  {
    var width = this._widgetWidth - 2*this._widgetMargin;
    var min = this._trackImageDimension;
    var max = width - this._trackImageDimension;
    var length = max - min;
    start = min + length*this._startPercent/100.0;
    var other = min + length*this._endPercent/100.0;
    size = other - start;
  }
  else
  {
    var height = this._widgetHeight - 2*this._widgetMargin;
    var min = this._trackImageDimension;
    var max = height - this._trackImageDimension;
    var length = max - min;
    var other = min + length - length*this._startPercent/100.0;
    start = min + length - length*this._endPercent/100.0;
    size = other - start;
  }
  return {"start":start, "size":size};
}

JSSlider.prototype._appendTickMarks = function(sb)
{
  var numberOfTicks = this._numTicks;
  if (numberOfTicks > 0 || (this._customImage != null) )
  {
    var ticksLength, outerTop, outerLeft, outerWidth, outerHeight,
        tickWidth, tickHeight;
    if (this._horizontalLayout)
    {
      if (this._ticksBeforeTrack)
      {
        outerTop = this._widgetMargin;
      }
      else
      {
        outerTop = this._widgetMargin + this._trackImageDimension + this._ticksMargin;
      }
      outerLeft = this._widgetMargin + this._trackImageDimension;
      ticksLength = this._widgetWidth - 2*this._widgetMargin -
        2*this._trackImageDimension;
      outerWidth = ticksLength;
      outerHeight = this._ticksThickness;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -