亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? logger.js

?? ajax patterns 這是關于ajax設計模式方面的原代碼
?? JS
字號:
/*Requires: Prototype Javascript library (http://prototype.conio.net/)Copyright (c) 2005 Corey Johnson (probablyCorey@gmail.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/// ------------// Custom Event// ------------CustomEvent = Class.create()CustomEvent.prototype = {  initialize : function() {  	this.listeners = []  },	addListener : function(method) {		this.listeners.push(method)	},	removeListener : function(method) {		var foundIndexes = this._findListenerIndexes(method)		for(var i = 0; i < foundIndexes.length; i++) {			this.listeners.splice(foundIndexes[i], 1)		}	},	dispatch : function(handler) {		for(var i = 0; i < this.listeners.length; i++) {			try {				this.listeners[i](handler)			}			catch (e) {				alert("Could not run the listener " + this.listeners[i] + ". " + e)			}		}	},	// Private Methods	// ---------------	_findListenerIndexes : function(method) {		var indexes = []		for(var i = 0; i < this.listeners.length; i++) {						if (this.listeners[i] == method) {				indexes.push(i)			}		}		return indexes	}}// ------// Cookie// ------var Cookie = {	set : function(name, value, expirationInDays, path) {		var cookie = escape(name) + "=" + escape(value)		if (expirationInDays) {			var date = new Date()			date.setDate(date.getDate() + expirationInDays)			cookie += "; expires=" + date.toGMTString()		} 		if (path) {			cookie += ";path=" + path		}		document.cookie = cookie		if (value && (expirationInDays == undefined || expirationInDays > 0) && !this.get(name)) {			Logger.error("Cookie (" + name + ") was not set correctly... The value was " + value.toString().length + " charachters long (This may be over the cookie limit)");		}	},	get : function(name) {		var pattern = "(^|;)\\s*" + escape(name) + "=([^;]+)"		var m = document.cookie.match(pattern)		if (m && m[2]) {						return unescape(m[2])		}		else return null	},	getAll : function() {		var cookies = document.cookie.split(';')		var cookieArray = []						for (var i = 0; i < cookies.length; i++) {						try {				var name = unescape(cookies[i].match(/^\s*([^=]+)/m)[1])				var value = unescape(cookies[i].match(/=(.*$)/m)[1])			}			catch (e) {				continue			}			cookieArray.push({name : name, value : value})			if (cookieArray[name] != undefined) {				Logger.waring("Trying to retrieve cookie named(" + name + "). There appears to be another property with this name though.");			}						cookieArray[name] = value		}		return cookieArray	},	clear : function(name) {		this.set(name, "", -1)	},	clearAll : function() {		var cookies = this.getAll()		for(var i = 0; i < cookies.length; i++) {			this.clear(cookies[i].name)		}	}}   // ------// Logger// -----        Logger = {	logEntries : [],	onupdate : new CustomEvent(),	onclear : new CustomEvent(),    	// Logger output      log : function(message, tag) {	  var logEntry = new LogEntry(message, tag || "info")		this.logEntries.push(logEntry)		this.onupdate.dispatch(logEntry)	},	info : function(message) {		this.log(message, 'info')	}, 	debug : function(message) {		this.log(message, 'debug')	},  	warn : function(message) {	  this.log(message, 'warning')	},	error : function(message, error) {	  this.log(message + ": \n" + error, 'error')	},	clear : function () {		this.logEntries = []		this.onclear.dispatch()	}}  LogEntry = Class.create()LogEntry.prototype = {      initialize : function(message, tag) {      this.message = message      this.tag = tag    }}LogConsole = Class.create()LogConsole.prototype = {    // Properties  // ----------  commandHistory : [],  commandIndex : 0,  // Methods  // -------  initialize : function() {    this.outputCount = 0    this.tagPattern = Cookie.get('tagPattern') || ".*"    	// I hate writing javascript in HTML... but what's a better alternative    this.logElement = document.createElement('div')    document.body.appendChild(this.logElement)    Element.hide(this.logElement)		this.logElement.style.position = "absolute"    this.logElement.style.left = '0px'    this.logElement.style.width = '100%'    this.logElement.style.textAlign = "left"    this.logElement.style.fontFamily = "lucida console"    this.logElement.style.fontSize = "100%"    this.logElement.style.backgroundColor = 'darkgray'          this.logElement.style.opacity = 0.9     this.logElement.style.zIndex = 2000     // Add toolbarElement    this.toolbarElement = document.createElement('div')    this.logElement.appendChild(this.toolbarElement)         this.toolbarElement.style.padding = "0 0 0 2px"    // Add buttons            this.buttonsContainerElement = document.createElement('span')    this.toolbarElement.appendChild(this.buttonsContainerElement)     this.buttonsContainerElement.innerHTML += '<button onclick="logConsole.toggle()" style="float:right;color:black">close</button>'    this.buttonsContainerElement.innerHTML += '<button onclick="Logger.clear()" style="float:right;color:black">clear</button>'        		//Add Tag Filter		this.tagFilterContainerElement = document.createElement('span')    this.toolbarElement.appendChild(this.tagFilterContainerElement)     this.tagFilterContainerElement.style.cssFloat = 'left'    this.tagFilterContainerElement.appendChild(document.createTextNode("Log Filter"))        this.tagFilterElement = document.createElement('input')    this.tagFilterContainerElement.appendChild(this.tagFilterElement)      this.tagFilterElement.style.width = '200px'                        this.tagFilterElement.value = this.tagPattern        this.tagFilterElement.setAttribute('autocomplete', 'off') // So Firefox doesn't flip out        Event.observe(this.tagFilterElement, 'keyup', this.updateTags.bind(this))    Event.observe(this.tagFilterElement, 'click', function() {this.tagFilterElement.select()}.bind(this))            // Add outputElement    this.outputElement = document.createElement('div')    this.logElement.appendChild(this.outputElement)      this.outputElement.style.overflow = "auto"                  this.outputElement.style.clear = "both"    this.outputElement.style.height = "200px"    this.outputElement.style.backgroundColor = 'black'               this.inputContainerElement = document.createElement('div')    this.inputContainerElement.style.width = "100%"    this.logElement.appendChild(this.inputContainerElement)              this.inputElement = document.createElement('input')    this.inputContainerElement.appendChild(this.inputElement)      this.inputElement.style.width = '100%'                        this.inputElement.style.borderWidth = '0px' // Inputs with 100% width always seem to be too large (I HATE THEM) they only work if the border, margin and padding are 0    this.inputElement.style.margin = '0px'    this.inputElement.style.padding = '0px'    this.inputElement.value = 'Type command here'     this.inputElement.setAttribute('autocomplete', 'off') // So Firefox doesn't flip out    Event.observe(this.inputElement, 'keyup', this.handleInput.bind(this))    Event.observe(this.inputElement, 'click', function() {this.inputElement.select()}.bind(this))    		window.setInterval(this.repositionWindow.bind(this), 500)		this.repositionWindow()		    // Listen to the logger....    Logger.onupdate.addListener(this.logUpdate.bind(this))    Logger.onclear.addListener(this.clear.bind(this))		    // Preload log element with the log entries that have been entered		for (var i = 0; i < Logger.logEntries.length; i++) {  		this.logUpdate(Logger.logEntries[i])  	}     	  	// Feed all errors into the logger (For some unknown reason I can only get this to work  	// with an inline event declaration)  	Event.observe(window, 'error', function(msg, url, lineNumber) {Logger.error("Error in (" + (url || location) + ") on line "+lineNumber+"", msg)})    // Allow acess key link              var accessElement = document.createElement('span')    accessElement.innerHTML = '<button style="position:absolute;top:-100px" onclick="javascript:logConsole.toggle()" accesskey="d"></button>'  	document.body.appendChild(accessElement)  	if (Cookie.get('ConsoleVisible') == 'true') {		  this.toggle()		}	},	toggle : function() {	  if (this.logElement.style.display == 'none') {		  this.show()		}		else {			this.hide()		}	}, 		show : function() {	  Element.show(this.logElement)	  this.outputElement.scrollTop = this.outputElement.scrollHeight // Scroll to bottom when toggled	  Cookie.set('ConsoleVisible', 'true') 	  this.inputElement.select()	}, 		hide : function() {	  Element.hide(this.logElement)	  Cookie.set('ConsoleVisible', 'false')	},  		output : function(message, style) {			// If we are at the bottom of the window, then keep scrolling with the output						var shouldScroll = (this.outputElement.scrollTop + (2 * this.outputElement.clientHeight)) >= this.outputElement.scrollHeight				this.outputCount++	  	style = (style ? style += ';' : '')	  		  	style += 'padding:1px;margin:0 0 5px 0'	     		  		  if (this.outputCount % 2 == 0) style += ";background-color:#101010"	  		  	message = message || "undefined"	  	message = message.toString().escapeHTML()	  		  	this.outputElement.innerHTML += "<pre style='" + style + "'>" + message + "</pre>"	  		  	if (shouldScroll) {								this.outputElement.scrollTop = this.outputElement.scrollHeight			}	},		updateTags : function() {		var pattern = this.tagFilterElement.value			if (this.tagPattern == pattern) return		try {			new RegExp(pattern)		}		catch (e) {			return		}				this.tagPattern = pattern		Cookie.set('tagPattern', this.tagPattern)		this.outputElement.innerHTML = ""				// Go through each log entry again		this.outputCount = 0;		for (var i = 0; i < Logger.logEntries.length; i++) {  		this.logUpdate(Logger.logEntries[i])  	}  	},		repositionWindow : function() {		var offset = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop		var pageHeight = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight		this.logElement.style.top = (offset + pageHeight - Element.getHeight(this.logElement)) + "px"	},	// Event Handlers	// --------------	logUpdate : function(logEntry) {		if (logEntry.tag.search(new RegExp(this.tagPattern, 'igm')) == -1) return		var style = ''	  if (logEntry.tag.search(/error/) != -1) style += 'color:red'	  else if (logEntry.tag.search(/warning/) != -1) style += 'color:orange'	  else if (logEntry.tag.search(/debug/) != -1) style += 'color:green' 	  else if (logEntry.tag.search(/info/) != -1) style += 'color:white'	  else style += 'color:yellow'		this.output(logEntry.message, style)	},	clear : function(e) {		this.outputElement.innerHTML = ""	},	handleInput : function(e) {		if (e.keyCode == Event.KEY_RETURN ) {      	  	var command = this.inputElement.value	  		  	switch(command) {	    	case "clear":	      		Logger.clear()  	      		break		    		    	default:        	      	var consoleOutput = "" 	      		      	try {	        	consoleOutput = eval(this.inputElement.value)	        		      	}	      	catch (e) {  	        	Logger.error("Problem parsing input <" + command + ">", e)	        		        	break					}										Logger.log(consoleOutput)	      		      	break			}        		  	if (this.inputElement.value != "" && this.inputElement.value != this.commandHistory[0]) {	    	this.commandHistory.unshift(this.inputElement.value)	  	}	  	  	this.commandIndex = 0 	  	this.inputElement.value = ""                                                        		}    else if (e.keyCode == Event.KEY_UP && this.commandHistory.length > 0) {    	this.inputElement.value = this.commandHistory[this.commandIndex]			if (this.commandIndex < this.commandHistory.length - 1) {      	this.commandIndex += 1      }    }         else if (e.keyCode == Event.KEY_DOWN && this.commandHistory.length > 0) {    	if (this.commandIndex > 0) {                                            	this.commandIndex -= 1	    }                       			this.inputElement.value = this.commandHistory[this.commandIndex]	  }  		else {    		this.commandIndex = 0    }	}}         // Load the Console when the window loadsEvent.observe(window, "load", function() {logConsole = new LogConsole()}) // -------------------------// Helper Functions And Junk// -------------------------function inspect(element, hideProperties, hideMethods) {	var properties = []	var methods = [] 		element = $(element)	for(var internal in element) {		try {			if (element[internal] instanceof Function) {				if (!hideMethods) methods.push(internal + ":\t" + element[internal] )			}			else {				if (!hideProperties) properties.push(internal + ":\t" + element[internal] )			}		}		catch (e) {			Logger.error("Excetion thrown while inspecting object.", e)		}	}	properties.sort()	methods.sort()	var internals = properties.concat(methods)	var output = ""	for (var i = 0; i < internals.length; i++) {		output += (internals[i] + "\n")	}			return output}   Array.prototype.contains = function(object) {	for(var i = 0; i < this.length; i++) {		if (object == this[i]) return true	}	return false}  // Helper Alias for simple loggingvar puts = function() {return Logger.log(arguments[0], arguments[1])}      

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费在线观看入口| 日本国产一区二区| 日韩高清在线观看| 亚洲成人动漫在线观看| 日日摸夜夜添夜夜添精品视频| 中文字幕欧美一区| 亚洲美女视频一区| 亚洲第一福利视频在线| 日韩国产精品久久久| 日韩激情av在线| 久久精品国产亚洲高清剧情介绍 | 久久97超碰色| 激情五月激情综合网| 国产乱码精品1区2区3区| 国产成人在线色| 99精品1区2区| 欧美日韩一区二区不卡| 欧美一级电影网站| 国产日韩欧美制服另类| 亚洲色图欧洲色图| 日韩中文字幕区一区有砖一区 | 91理论电影在线观看| 欧美综合久久久| 日韩精品一区二区三区四区视频 | 精品噜噜噜噜久久久久久久久试看| 精品国产成人系列| 亚洲欧洲日韩在线| 日韩中文欧美在线| 成人a级免费电影| 欧美三级电影一区| 久久先锋影音av| 亚洲午夜久久久久久久久电影院| 日韩高清在线不卡| 不卡大黄网站免费看| 欧美肥妇毛茸茸| 国产精品电影一区二区| 蜜桃精品视频在线| 9人人澡人人爽人人精品| 日韩一区二区三区观看| 亚洲色图视频免费播放| 国产精品一级在线| 日韩欧美中文一区二区| 亚洲人妖av一区二区| 国产麻豆精品一区二区| 欧美剧在线免费观看网站| 国产欧美一区二区精品婷婷 | 日韩欧美国产一区在线观看| 国产精品嫩草99a| 精品一区二区三区免费视频| 欧美亚洲国产一卡| 亚洲人成在线播放网站岛国| 国产一区在线观看麻豆| 欧美高清一级片在线| 亚洲欧美日韩国产综合在线| 国产毛片精品一区| 欧美变态tickle挠乳网站| 亚洲一线二线三线视频| 波多野结衣中文字幕一区| 337p日本欧洲亚洲大胆精品 | 国产精品久久久久久久第一福利| 乱一区二区av| 日韩欧美激情在线| 日本成人中文字幕在线视频| 欧美色男人天堂| 亚洲日本护士毛茸茸| av在线综合网| 国产精品国产三级国产专播品爱网| 狠狠色狠狠色综合日日91app| 欧美高清激情brazzers| 三级成人在线视频| 日韩一本二本av| 免费三级欧美电影| 91精品国产乱码| 石原莉奈在线亚洲二区| 欧美一区二区三区视频免费播放| 亚洲电影你懂得| 欧美日本一区二区在线观看| 亚洲午夜电影网| 欧美精品v日韩精品v韩国精品v| 午夜精品福利在线| 欧美丰满一区二区免费视频| 男女激情视频一区| 欧美zozo另类异族| 国产成人一区二区精品非洲| 中文欧美字幕免费| 91小视频在线观看| 午夜免费久久看| 日韩视频一区二区三区在线播放| 麻豆精品国产91久久久久久| 2023国产精华国产精品| 成人小视频免费观看| 中文字幕一区二区5566日韩| 欧洲国内综合视频| 青青草97国产精品免费观看 | 午夜精品成人在线| 日韩一级精品视频在线观看| 国产成人自拍网| 亚洲黄色在线视频| 欧美一区2区视频在线观看| 久久精品国产亚洲一区二区三区| 国产欧美中文在线| 欧美在线观看视频一区二区三区| 日本三级韩国三级欧美三级| 久久噜噜亚洲综合| 91国产丝袜在线播放| 蜜臀久久久99精品久久久久久| 国产午夜精品福利| 欧美性大战久久久久久久| 日韩国产欧美在线观看| 中文字幕成人在线观看| 欧美性猛交一区二区三区精品| 久久 天天综合| 亚洲欧美偷拍另类a∨色屁股| 日韩精品自拍偷拍| 色久综合一二码| 国产成人综合亚洲91猫咪| 亚洲一区二区三区四区中文字幕| 国产午夜精品在线观看| 欧美精品一二三四| 94-欧美-setu| 国产一区二区三区| 日韩中文字幕亚洲一区二区va在线| 欧美激情一区二区三区四区| 日韩精品一区二区三区中文不卡 | 经典三级视频一区| 中文字幕一区二区不卡| 欧美成va人片在线观看| 欧美麻豆精品久久久久久| 成人激情小说网站| 国产精品中文有码| 男男gaygay亚洲| 午夜精品久久久| 亚洲激情一二三区| 最新日韩在线视频| 中文字幕不卡的av| 精品播放一区二区| 精品国产123| 欧美大片在线观看| 日韩欧美国产系列| 91精品婷婷国产综合久久性色| 欧美专区日韩专区| 91电影在线观看| 日本大香伊一区二区三区| 大桥未久av一区二区三区中文| 国产美女精品人人做人人爽 | 成人av动漫在线| 成人免费毛片嘿嘿连载视频| 国产精品 欧美精品| 久草这里只有精品视频| 久久se这里有精品| 日韩欧美不卡在线观看视频| 欧美性一区二区| 欧美一级久久久久久久大片| 国产伦精品一区二区三区免费| 日韩精品一区二区三区老鸭窝| 欧美日韩一区二区电影| 欧美性猛片aaaaaaa做受| 欧美午夜精品一区二区蜜桃 | 亚洲视频一区二区免费在线观看| 国产欧美精品一区| 国产精品水嫩水嫩| 成人欧美一区二区三区1314| 亚洲人成亚洲人成在线观看图片| 亚洲精品国产精华液| 亚洲成人久久影院| 日韩黄色小视频| 国产一区二区三区综合| av在线不卡电影| 欧美性色aⅴ视频一区日韩精品| 欧美日韩国产天堂| 久久这里只有精品首页| 国产精品久久综合| 亚洲成人激情综合网| 久久精品国产99国产精品| 国产成人精品免费| 色噜噜久久综合| 日韩欧美国产一区二区三区| 国产拍揄自揄精品视频麻豆| 夜夜夜精品看看| 精品一区二区在线观看| 91视频观看免费| 日韩一区二区三区在线视频| 中文字幕不卡在线| 天天色图综合网| 国产成人在线看| 欧美日韩国产在线播放网站| 2020国产精品自拍| 亚洲综合av网| 成人中文字幕合集| 7777精品伊人久久久大香线蕉完整版| 久久亚洲免费视频| 亚洲一区二区三区三| 国产一区中文字幕| 欧美日韩精品一二三区| 国产精品入口麻豆原神| 麻豆国产精品视频| 91成人在线免费观看| 亚洲国产成人在线| 蜜桃视频在线观看一区二区| 色狠狠桃花综合|