Greasy Fork is available in English.

网页限制解除

解除一些网站的禁止 选择、复制、右键 等限制

目前为 2015-11-23 提交的版本。查看 最新版本

// ==UserScript==
// @id             99feda91-dcd8-4626-8555-d29c389a997f
// @namespace      https://www.github.com/Cat7373/
// @name           网页限制解除
// @name:en        Remove web limits
// @name:zh        网页限制解除
// @description    解除一些网站的禁止 选择、复制、右键 等限制
// @description:en Deregulating some sites prohibit select, copy, right of
// @description:zh 解除一些网站的禁止 选择、复制、右键 等限制
// @homepageURL    https://github.com/Cat7373/remove-web-limits
// @supportURL     https://github.com/Cat7373/remove-web-limits/issues/
// @author         Cat73
// @version        1.1
// @license        LGPLv3
// @compatible     chrome 完美支持
// @compatible     firefox 未测试
// @compatible     opera 未测试
// @compatible     safari 未测试
// @include        http://*
// @include        https://*
// @match          *://*/*
// @grant          unsafeWindow
// @run-at         document-start
// ==/UserScript==

!function(eventNames) {
  // Hook addEventListener
  function addEventListener(event, func, useCapture) {
    if(eventNames.indexOf(event) >= 0) {
      func = function() {
        return true;
      };
    }
    return this._addEventListener(event, func, useCapture);
  }

  // 获取所有元素 包括document
  function getElements() {
    var elements = document.getElementsByTagName('*');
    var elements2 = [];
    for(var i = 0; i < elements.length; i++) {
      elements2[i] = elements[i];
    }
    elements2[elements2.length] = document;
    return elements2;
  }

  // 清理限制函数
  function clear() {
    var elements = getElements();

    for(var i = 0; i < elements.length; i++) {
      var element = elements[i];

      if(element.addEventListener !== addEventListener) {
        element.addEventListener = addEventListener;
      }

      for(var j = 0; j < eventNames.length; j++) {
        element['on' + eventNames[j]] = null;
      }
    }
  }

  // 添加css
  function addStyle(css) {
    var head = document.getElementsByTagName('head')[0];
    var style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
  }

  // 将 addEventListener 重定义位置
  HTMLElement.prototype._addEventListener = HTMLElement.prototype.addEventListener;
  document._addEventListener = document.addEventListener;

  // 调用清理函数
  setInterval(clear, 5000);
  window.addEventListener('load', clear, true);
  clear();

  addStyle("html, * {-webkit-user-select:text!important; -moz-user-select:text!important;}");
}("contextmenu|select|selectstart|copy|cut|dragstart".split("|"));