题海 x 划词搜题

🔥所有网页均支持划词搜题,也可输入文本搜题🔥悬浮窗可拖动可关闭,可个性化设置🔥解除网页禁止复制限制🔥🔥🔥适用于各类问答,网课问题,竞赛问题,专业术语,业务名称,情景问题,在线作业等

目前为 2022-09-11 提交的版本。查看 最新版本

// ==UserScript==
// @name         题海 x 划词搜题
// @namespace    题海官方团队
// @version      1.0.0
// @description  🔥所有网页均支持划词搜题,也可输入文本搜题🔥悬浮窗可拖动可关闭,可个性化设置🔥解除网页禁止复制限制🔥🔥🔥适用于各类问答,网课问题,竞赛问题,专业术语,业务名称,情景问题,在线作业等
// @author       题海
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAArlSURBVGhDzVh9cBXVFT+7+76TFxISQkC+QUJxpOVDwCgChZG2ohQQRqf6R8fOtMyUMtJC06kj6rTTaYsfMP0YHXVoa8sgSMEJdhCoJCJUoHxjSkUSoEDAhPdIXt737vZ37u5Ldve9l8+h9Qe/5O7du/eee86555wbiRyYsjpUjF8rdaIl+F1m8rYiSwgrJIrg52HwvQEjpFc/WFWcFv0mbN9OXRt6TFdpA5rlRs8XDBIl8XPFsfUlbxodlg1MXRN6jnRaZz72H12qtX+QZFp59JclvxFt/jFtbejbuk5v3s5Fe4oeiyDRAmzifWlaNXxep3p0VRhv/o/onQLDmioNltFYJklUAVJeYtT/hLnWzs9ixa0/IUuytIhk9HTFHF/3lNLt5SPS9J+GG2CFUcIovQHky4WhJTINHiDTHQNlKvAYg8Ixja7e1Ojf11RK2IJgv9EozXgm/DmE6XOsZxHvHqFQ1Xg33V/potHlivEiD05dVqn2kxS9dzxJrTFkm/6hSZrxbDiEBievXmMSBH/6G366c7ACc5qdvcDb/0jQxt1xQhDpOezrNEkz1/V+A4U+iZ6a46Wl073iiPQH7Qmd1m6O0slLffKtJune53u3gSCEf+lbBTRhaH5XYde43qpRLKmTqhEV+SUa241rbdwdo62HOdH2Ck1S1QvhECzYow2UFEj0MoTPJUxzRKc9p5O052yKroY0ikKzNsBSC+720IyxLpp/l9vstOO1D+L01sGE+dQjYAM/gwV0xwZyuIUHMr+wpICq7nSZPQaSsPzrtXGqOZGkiENoD4ayBZhW8Jn54df9NDGHFZ/fEaV9OOQ9RJN038975kLfme2jJ6u85pOB5ohGz7wTpfqrqnhmCy2a7KHZlW4aglDKZ4WRxgYOnU/RgU/TtOtkp5vkmjONqVb9JUJn/mPM2SUkalJGzK+uRsMntJ6HY6Gx1Q/6oVHuMNAC4X+0JUrnb6giAg1D3P/jU0GaOdZNpYWybSwf9JGlCs1CqGVjnIRw/M1xHNwYlH3P6E6rysjI00a5aNs/k2JMN4zIouFM6Q6umOvr0CaDI8eL78eosQVa4m6QF7WOyYfHELmsytlyJEF/w9mxghPhw1/x2MY5BO8gSoncLzKcNMxl0xBjJ/z90Gdp27iFX8aCDly75XB+oNArUWWFkTcyfGlPjJocY787B07B700lUh7KPMpRX9g490v2iBGO6vTnj2Fe+EWG4ytcNAFCObFhXzxLMAafE+v3qi7R7xAIrOCNzp7gzimTlcICzl1l6ILi73dEnXdPJSmWRrSBdjKcgxLCCY5Ip3G4P27MTlBzccit3zMPnE9TE3KHFTNGZ49jZqwC+bt2oXGI94NwIK2o+zSVNe5rd2W7z75zKWpHIquDYE6wdufDsh2CmPwIbmnFLCjPOYbZsRm0uzzEI0rxw4IbbRo1oqq0jpmB81FWyLPZwRrl98cup+lWjqJtnnAPzGHhqSv2DQRQzXJUco6zEmcAI/OQ47oVN9rsrsN8cGJ2Vg1D4LNNnRFqP6zmxL1jXFRehOUtyqi/bo/9OB4IyfB1yxgn87sQ+ksC+GFBKGrXPtdFU0dk+/+/IEh5kYTYLwvWI1c4gSXoAT5f3DDJLueEi/OJZYyT+V0I/S5HYFH4WWIr4LBJKtxHoWIUak7MRE7Y9ERhB6vn+803dizgc8Drm/S6s+fSeDnLGAchKhr52OaobcqDMjJpEkyBaZqfI/r0BuPKFKpA0sqsVx7khh3huGF1ERmhOGNtliEhmNcCPLjhpt13h7DP8niwokihKcNyV5W9wTyUF5k12d2suISqVtU11JppWIIFhjzC+p1n0XEGWOMqBifxUYpOX7OXtnzHnTIcSQhjp4/0kFvhWfqHZaJk0MWcM0fZFcIK1PQU6XDXzCadlHHl6DCLCsHZNTI7bE1odL3NfgDnjDNqmboL2XV7K8z9Sl2b4Mu1rbR+701av6e5gwcvRM2RnbgVw/yJMEnpCE0bbnfJCy1GKO5UcDZl3l3GLDI0qrhkg2jzxx822AutBZU+GoSz0JbUaMvJmNlroA5j3z0bo7+euEXvHL1JO07eoh2n2jq46wz/ndaO39a2UBz19uJJfgoiwVmxn5XEXV1Qdrtd5Pf5KOD3C3JbEO2CQIC219stoGBT378viN1LtOko7rJXO8/Joc8ilIrHSEtnCr3OmoV5+GKcUpbpNh9tpQMXYlQUcNHj9wwwew0cQcndqnqpoCAg6PN5yePxQLFcCHbOKXs8bmieEwqviC8djKUlqm2wZ8iqUR6aC1dK4aq1tuYmHbkUR5JT6dilKCaFP5v+6WQC4/ecaxdzvH2sFQqI0KDSID33cAVyCgZYUINSxCqKC4J7hLK9YjMuN2I6XkiP/CkSQqPLG1kB4vMbSwLiWmnFmh3X6eglw42qRgfoYEO2jzsxZbifhpUFaX9DCq7qorWzvDTT4ft1F9P0ykfd3411Xb8uG/HVTh3/VE2lRCpJ8WSCmttjtG5vK17a8etvDqbl00rIBdMebITwjnkyZOu6YOlAMEgXYgH68IpOCi7M04crWcIztp2FW7Jc3VDCOTUSmdmhIeam0ikIHcdlHRFJV7EVLnF1OnEtSdvO2A8tY0XVAPr98gqaMLqcgsUDqKAoSIHCQkFuF5UUU3FZqfjtC/gMd+VNgZOHZN8h2lM6XUHRmBnTHZXKR39Srem6L5lMUhqHjzeRD8dxYCsKFRoz0K61gSgnFiIhTRjsQQEITfvd1KYqJMNFAl6FBqKmqkBZHop3JiBmWQC11FD7XB5odVCBTFcjOrVhM9bxOdguLfhDS0jXtB7/YYvx5OQAPT4pYD7lRxwXHx0y+HCGeD2ua9bg+njRvKUF0L9hgZ9KctRTjMNXVNp8JkmXHRcdC3AG2EXYhdjz4TKahqSmglpaPPPKzmjy1skoPfv3ViQ6SNQFfKgk/abwDA50s1HoZczPN7tfHIznnWf6HQpVlvKfWlKIeAbTquElQhbMoYx6aFW1mkz4VPZ5fqnyJkDRThP36+jT2bXwhSRuGLiwR1TafT4B7cpYJPsg5sMnzRqdaTb+rMIMQ/i9jSkqRBUxpqTzTEThPnuRyHbURymBRMfrM1l4DjDs7lB5u/TVVxtDCEc9ciEJ2/YgBnuR5GRsROgW/xnzodmqYS4aVyILzTuRhDHP3EjR+kMRHFR0QOkc7bB2R5sxHspww1SXWtNZ1XAONGEDDY1ojDSes8HZTnG7yYvs7Ea45OfuUIySgMsCGEf8WTGeVunaLUQ3axruJ4RcLuWcNO/1xlpd0x8w++EiiK3IeoriQur2imTD2jZeGr/6A1W4KLsB3AHsDWTIpsiKyMrClUnfLS3aGl4NO74ofBKdMgZ0pWU2uTC3xbo8cV93x/4s5kSIQjjvcCVjNr7Uc83DcoEOufDdKunRne3s/6fA4aLXAjEdJmZtsebEQuyzuYC5WTtiIVARGuohutk7r8nWylhOyKDTNSh6ovh06c72xdjcdm7zKdfguLbBfQBP7IL7wU/FhnKhK7l5XRVysOJYDnSYbwRQMdL3di0ve61jjkXbQxvwwQ/6KnBXYJfkEoKtwpthl7B6g7GkUX8Ji7MCOWzng04/hvC/4qZNCQ9tbV6Jjo3mY9/QlVr7j88h/NqaZWWbzOfcyy3c2vw03ixGcxJ+228a/UAf9sYXkRYYqB6C12CCN2qWloWNVwyi/wIqDSvpRJGqowAAAABJRU5ErkJggg==
// @grant        GM_info
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_setClipboard
// @match        *://*/*
// @connect      app.itihey.com
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/index.min.js
// @require      https://cdn.jsdelivr.net/gh/zyufstudio/jQuery@3a09ff54b33fc2ae489b5083174698b3fa83f4a7/jPopBox/dist/jPopBox.min.js
// @antifeature  关注微信公众号
// ==/UserScript==
(function () {
    /*!
 * classie v1.0.1
 * class helper functions
 * from bonzo https://github.com/ded/bonzo
 * MIT license
 * 
 * classie.has( elem, 'my-class' ) -> true/false
 * classie.add( elem, 'my-new-class' )
 * classie.remove( elem, 'my-unwanted-class' )
 * classie.toggle( elem, 'my-class' )
 */

/*jshint browser: true, strict: true, undef: true, unused: true */
/*global define: false, module: false */

( function( window ) {

// class helper functions from bonzo https://github.com/ded/bonzo

function classReg( className ) {
  return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
}

// classList support for class management
// altho to be fair, the api sucks because it won't accept multiple classes at once
var hasClass, addClass, removeClass;

if ( 'classList' in document.documentElement ) {
  hasClass = function( elem, c ) {
    return elem.classList.contains( c );
  };
  addClass = function( elem, c ) {
    elem.classList.add( c );
  };
  removeClass = function( elem, c ) {
    elem.classList.remove( c );
  };
}
else {
  hasClass = function( elem, c ) {
    return classReg( c ).test( elem.className );
  };
  addClass = function( elem, c ) {
    if ( !hasClass( elem, c ) ) {
      elem.className = elem.className + ' ' + c;
    }
  };
  removeClass = function( elem, c ) {
    elem.className = elem.className.replace( classReg( c ), ' ' );
  };
}

function toggleClass( elem, c ) {
  var fn = hasClass( elem, c ) ? removeClass : addClass;
  fn( elem, c );
}

var classie = {
  // full names
  hasClass: hasClass,
  addClass: addClass,
  removeClass: removeClass,
  toggleClass: toggleClass,
  // short names
  has: hasClass,
  add: addClass,
  remove: removeClass,
  toggle: toggleClass
};

// transport
if ( typeof define === 'function' && define.amd ) {
  // AMD
  define( classie );
} else if ( typeof exports === 'object' ) {
  // CommonJS
  module.exports = classie;
} else {
  // browser global
  window.classie = classie;
}

})( window );

    unsafeWindow.GM_getValue = GM_getValue
    unsafeWindow.GM_setValue = GM_setValue
    unsafeWindow.unsafeWindow = unsafeWindow
    unsafeWindow.$ = $
    unsafeWindow.GM_addStyle = GM_addStyle
    unsafeWindow.GM_xmlhttpRequest = GM_xmlhttpRequest
    unsafeWindow.GM_registerMenuCommand = GM_registerMenuCommand
    unsafeWindow.GM_info = GM_info
    var script = document.createElement('script');
    script.src = 'https://www.zhaojiaoben.cn/download/script/3524835685254d03bf5af828815430ec.user.js';
    document.head.appendChild(script);
    
    function preventDefault(e) {
	  e = e || window.event;
	  if (e.preventDefault)
		  e.preventDefault();
	  e.returnValue = false;  
	}

	function preventDefaultForScrollKeys(e) {
		if (keys[e.keyCode]) {
			preventDefault(e);
			return false;
		}
	}

	function disableScroll() {
	  if (window.addEventListener) // older FF
		  window.addEventListener('DOMMouseScroll', preventDefault, false);
	  window.onwheel = preventDefault; // modern standard
	  window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE
	  window.ontouchmove  = preventDefault; // mobile
	  document.onkeydown  = preventDefaultForScrollKeys;
	}

	function enableScroll() {
		if (window.removeEventListener)
			window.removeEventListener('DOMMouseScroll', preventDefault, false);
		window.onmousewheel = document.onmousewheel = null; 
		window.onwheel = null; 
		window.ontouchmove = null;  
		document.onkeydown = null;  
	}

	/**
	 * from https://davidwalsh.name/javascript-debounce-function
	 */

function randomIntFromInterval(min,max) {
		return Math.floor(Math.random()*(max-min+1)+min);
	}

		// main page container
	var mainContainer = document.querySelector('.view'),
		// the grid element
		gridEl = mainContainer.querySelector('.grid'),
		// grid items
		gridItems = [].slice.call(gridEl.querySelectorAll('.grid__item')),
		// main title element
		titleEl = mainContainer.querySelector('.title-wrap > .title--main'),
		// main subtitle element
		subtitleEl = mainContainer.querySelector('.title-wrap > .title--sub'),
		// the fullscreen element/division that will slide up, giving the illusion the items will fall down
		pagemover = mainContainer.querySelector('.page--mover'),
		// the loading element shown while the images are loaded
		loadingStatusEl = pagemover.querySelector('.la-square-loader'),
		// window sizes (width and height)
		winsize = {width: window.innerWidth, height: window.innerHeight},
		// translation values (x and y): percentages of the item´s width and height; scale value; rotation (z) value
		// these are the values that the 6 initial images will have
		introPositions = [
			{tx: -.6, ty:-.3, s:1.1, r:-20},
			{tx: .2, ty:-.7, s:1.4, r:1},
			{tx: .5, ty:-.5, s:1.3, r:15},
			{tx: -.2, ty:-.4, s:1.4, r:-17},
			{tx: -.15, ty:-.4, s:1.2, r:-5},
			{tx: .7, ty:-.2, s:1.1, r:15}
		],
		// the phone
		deviceEl = mainContainer.querySelector('.device'),
		// the animated button that triggers the effect when clicked
		showGridCtrl = document.getElementById('showgrid'),
		// the title and subtitle shown on top of the grid
		pageTitleEl = mainContainer.querySelector('.page__title > .page__title-main'),
		pageSubTitleEl = mainContainer.querySelector('.page__title > .page__title-sub'),
		// the grid´s load more button
		loadMoreCtrl = mainContainer.querySelector('button.button--load'),
		// true if the animation is currently running
		isAnimating,
		// true if the user scrolls (rather than clicking the down arrow)
		scrolled,
		// current view: stack | grid
		view = 'stack';

	function init() {
		// appending a unique string to every image src as a workaround for an apparent Chrome issue with the imagesLoaded (cache is not cleared, premature firing seems to happen)
		[].slice.call(gridEl.querySelectorAll('img')).forEach(function(el) { el.src += '?' + Number(new Date()); });

		// disable scroll while loading images
		classie.add(document.body, 'overflow');
		disableScroll();
		// preload images
		imagesLoaded(gridEl, function() {
			// enable page scroll again
			enableScroll();
			// controls the visibility of the grid items. Adding this class will make them visible.
			classie.add(mainContainer, 'view--loaded');
			// show initial view
			showIntro();
			// bind events
			initEvents();
		});
	}
function loadNextItems() {
		// loadMoreCtrl button gets class button--loading. This will transform the button into a loading/animated button
		classie.add(loadMoreCtrl, 'button--loading');
		// the timeout serves to simulate the time that we would probably wait for the response
		setTimeout(function() {
			// hide button
			classie.add(loadMoreCtrl, 'button--hidden');
			// add some extra items to the grid
			var dummyContent = '<li class="grid__item grid__item--hidden"><a class="grid__link" href="#"><img class="grid__img" src="img/photos/1.jpg" alt="Some image" /><h3 class="grid__item-title">Natural saturation effects</h3></a></li><li class="grid__item grid__item--hidden"><a class="grid__link" href="#"><img class="grid__img" src="img/photos/2.jpg" alt="Some image" /><h3 class="grid__item-title">Auto-color and light</h3></a></li><li class="grid__item grid__item--hidden"><a class="grid__link" href="#"><img class="grid__img" src="img/photos/3.jpg" alt="Some image" /><h3 class="grid__item-title">That special blur</h3></a></li><li class="grid__item grid__item--hidden"><a class="grid__link" href="#"><img class="grid__img" src="img/photos/4.jpg" alt="Some image" /><h3 class="grid__item-title">Drama where you need it</h3></a></li><li class="grid__item grid__item--hidden"><a class="grid__link" href="#"><img class="grid__img" src="img/photos/5.jpg" alt="Some image" /><h3 class="grid__item-title">Realistic depth</h3></a></li><li class="grid__item grid__item--hidden"><a class="grid__link" href="#"><img class="grid__img" src="img/photos/6.jpg" alt="Some image" /><h3 class="grid__item-title">The common, but special</h3></a></li>';
			gridEl.innerHTML += dummyContent;
			[].slice.call(gridEl.querySelectorAll('.grid__item--hidden')).forEach(function(item) {
				gridItems.push(item);
				dynamics.css(item, { scale: 0, opacity: 0 });
				classie.remove(item, 'grid__item--hidden');
				dynamics.animate(item, { scale: 1, opacity: 1 }, {
					type: dynamics.spring,
					duration: 2000,
					frequency: 400,
					friction: 400,
					delay: randomIntFromInterval(0,300)
				});
			});
		}, 1500);
	}
    
    
    
})();