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

📄 jsbridge.js

📁 属性sosuo算法
💻 JS
📖 第 1 页 / 共 2 页
字号:
    for(var i = 0; i < this.hideForFullscreen.length; i++) {
          var elt = this.document.getElementById(this.hideForFullscreen[i]);
          elt.collapsed = true;
    }
    for(var i = 0; i < this.showForFullscreen.length; i++) {
          var elt = this.document.getElementById(this.showForFullscreen[i]);
          elt.collapsed = false;
    }


    var self = this;
    this.mousedown = false;
    this.mousemoveListener = function(event) { 
        if(!self.mousedown) self.onMouseMoveFullscreen(); 
    }
    this.mousedownListener = function(event) { 
        self.mousedown = true;
        self.hideVideoControlsTimer.cancel();
    }
    this.mouseupListener = function(event) { 
        self.mousedown = false;
        self.startHideVideoControlsTimer();
    }
    this.document.addEventListener('mousemove', this.mousemoveListener, true);
    this.document.addEventListener('mousedown', this.mousedownListener, true);
    this.document.addEventListener('mouseup', this.mouseupListener, true);
    this.startHideVideoControlsTimer();
  },

  leaveTotallyFullscreen: function() {
    this.document.getElementById('titlebar').collapsed = false;
    this.document.getElementById('bottom').collapsed = false;
    this.document.getElementById('videoInfoDisplay').collapsed = false;
    this.hideVideoControlsTimer.cancel();
    pybridge.showCursor(true);
  },

  onMouseMoveFullscreen: function() {
      this.leaveTotallyFullscreen();
      this.startHideVideoControlsTimer();
  },

  startHideVideoControlsTimer: function() {
    var bottom = this.document.getElementById('bottom')
    var videoInfoDisplay = this.document.getElementById('videoInfoDisplay')
    var titlebar = this.document.getElementById('titlebar');
    var callback = {notify: function() {
        titlebar.collapsed = videoInfoDisplay.collapsed = bottom.collapsed = true;
        pybridge.showCursor(false);
    }};
    this.hideVideoControlsTimer.initWithCallback(callback, 3000,
            Components.interfaces.nsITimer.TYPE_ONE_SHOT);
  },


  leaveFullscreen: function() {
    if(!this.window.fullScreen) return;
    this.window.fullScreen = false;
    for(var i = 0; i < this.hideForFullscreen.length; i++) {
          var elt = this.document.getElementById(this.hideForFullscreen[i]);
          elt.collapsed = false;
    }
    for(var i = 0; i < this.showForFullscreen.length; i++) {
          var elt = this.document.getElementById(this.showForFullscreen[i]);
          elt.collapsed = true;
    }
    this.leaveTotallyFullscreen();
    this.document.removeEventListener('mousemove', this.mousemoveListener, true);
    this.document.removeEventListener('mouseup', this.mouseupListener, true);
    this.document.removeEventListener('mousedown', this.mousedownListener, true);
  },

  xulNavigateDisplay: function(area, uri) {
    var browser = this.document.getElementById(area);
    browser.contentDocument.location = uri;
  },

  getDocument: function(area) {
    var browser = this.document.getElementById(area);
    return browser.contentDocument;
  },

  createNode: function(document, xml) {
    var r = document.createRange();
    r.selectNode(document.documentElement);
    return r.createContextualFragment(xml);
  },

  xulAddElementAtEnd: function(area, xml, id) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.insertBefore(this.createNode(document, xml), null);
  },
  xulAddElementBefore: function(area, xml, id) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.parentNode.insertBefore(this.createNode(document, xml), elt);
  },
  xulRemoveElement: function(area, id) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.parentNode.removeChild(elt);
  },
  xulChangeElement: function(area, id, xml) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    var next = elt.nextSibling;
    elt.parentNode.removeChild(elt);
    next.parentNode.insertBefore(this.createNode(document, xml), next);
  },
  xulChangeAttribute: function(area, id, name, value) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.setAttribute(name, value);
  },
  xulRemoveAttribute: function(area, id, name) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.removeAttribute(name);
  },
  xulHideElement: function(area, id) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.style.display = 'none';
  },
  xulShowElement: function(area, id) {
    var document = this.getDocument(area);
    var elt = document.getElementById(id);
    elt.style.display = '';
  },

  setActionGroupEnabled: function(group, enabled) {
     var elements = actionGroupCommands[group];
     if(group == 'VideoPlayable') {
       this.setActive("bottom-buttons-play", enabled);
     }
     for(var i = 0; i < elements.length; i++) {
       var elt = this.document.getElementById(elements[i]);
       if(!enabled) {
         elt.setAttribute('disabled', true);
       } else {
         elt.removeAttribute('disabled');
       }
     }
  },
  updateLabel: function(id, label) {
    var menuitem = this.document.getElementById(id);
    menuitem.setAttribute('label', label);
  },
  updateVideoFilename: function(newFilename) {
    if(newFilename) this.videoFilename = newFilename;
    else this.videoFilename = null;
  },
  saveVideo: function() {
    if(this.videoFilename == null) return;

    var fp = Components.classes["@mozilla.org/filepicker;1"]
            .createInstance(Components.interfaces.nsIFilePicker);
    var saveMenuItem = this.document.getElementById('menuitem-video-save');
    fp.init(this.window, saveMenuItem.getAttribute('label'),
        Components.interfaces.nsIFilePicker.modeSave);
    fp.defaultString = this.videoFilename;
    var res = fp.show();
    if (res == Components.interfaces.nsIFilePicker.returnOK){
        pybridge.saveVideoFile(fp.file.path);
    }
  },

  performStartupTasks: function() {
    var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                .getService(Components.interfaces.nsIWindowWatcher);
    var startupTasksURL = "chrome://dtv/content/startup.xul";
    this.startup = wwatch.openWindow(null, startupTasksURL, 
            "DemocracyPlayerStartup", "chrome,dialog=yes,all", null);
  },

  updateSearchProgress: function (message) {
    this.startup.updateSearchProgress (message);
  },

  searchFinished: function (message) {
    writelog(message);
    this.startup.searchFinished (message);
  },

  searchCancelled: function (message) {
    this.startup.searchCancelled (message);
  },

  setSliderText: function(elapsed) {
    var hours = Math.floor(elapsed/3600);
    var mins = Math.floor((elapsed - hours*3600)/60);
    var secs = elapsed - hours*3600 - mins*60;
    var text = twoDigits(hours)+":"+twoDigits(mins)+":"+twoDigits(secs);
    var sliderText = this.document.getElementById("progress-text");
    sliderText.childNodes[0].nodeValue = text;
  },

  moveSlider: function(fractionDone) {
    var left = 61;
    var right = 204;
    var newSliderPos = Math.floor(left + fractionDone*(right-left));
    var progressSlider = this.document.getElementById("progress-slider");
    progressSlider.left = newSliderPos;
  },

  setSearchEngineInfo: function(names, titles) {
    this.searchEngineNames = names;
    this.searchEngineTitles = titles;
  },

  setSearchEngine: function(engine) {
    var searchIcon = this.document.getElementById("search-icon");
    searchIcon.setAttribute("src",'images/search_icon_' + engine + '.png');
  },
};

var Module = {
  _classes: {
      jsBridge: {
          classID: JSBRIDGE_CLASSID,
          contractID: JSBRIDGE_CONTRACTID,
          className: "DTV Javascript helpers",
          factory: {
              createInstance: function(delegate, iid) {
                  if (delegate)
                      throw Components.results.NS_ERROR_NO_AGGREGATION;
                  return new jsBridge().QueryInterface(iid);
              }
          }
      }
  },

  registerSelf: function(compMgr, fileSpec, location, type) {
      var reg = compMgr.QueryInterface(
          Components.interfaces.nsIComponentRegistrar);

      for (var key in this._classes) {
          var c = this._classes[key];
          reg.registerFactoryLocation(c.classID, c.className, c.contractID,
                                      fileSpec, location, type);
      }
  },

  getClassObject: function(compMgr, cid, iid) {
      if (!iid.equals(Components.interfaces.nsIFactory))
          throw Components.results.NS_ERROR_NO_INTERFACE;

      for (var key in this._classes) {
          var c = this._classes[key];
          if (cid.equals(c.classID))
              return c.factory;
      }

      throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
  },

  canUnload: function (aComponentManager) {
      return true;
  }
};

function NSGetModule(compMgr, fileSpec) {
  return Module;
}

⌨️ 快捷键说明

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