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

📄 behaviour.js

📁 This Tetris-Clone was assembled from one ATmega8, 240 red LEDs, a few BJTs, a few IC s and some push
💻 JS
字号:
var Behaviour = {	list : new Array,		register : function(sheet){		Behaviour.list.push(sheet);	},		start : function(){		Behaviour.addLoadEvent(function(){			Behaviour.apply();		});	},		apply : function(){		for (h=0;sheet=Behaviour.list[h];h++){			for (selector in sheet){				list = document.getElementsBySelector(selector);								if (!list){					continue;				}				for (i=0;element=list[i];i++){					sheet[selector](element);				}			}		}	},		addLoadEvent : function(func){		var oldonload = window.onload;				if (typeof window.onload != 'function') {			window.onload = func;		} else {			window.onload = function() {				oldonload();				func();			}		}	}}Behaviour.start();function getAllChildren(e) {  // Returns all children of element. Workaround required for IE5/Windows. Ugh.  return e.all ? e.all : e.getElementsByTagName('*');}document.getElementsBySelector = function(selector) {  // Attempt to fail gracefully in lesser browsers  if (!document.getElementsByTagName) {    return new Array();  }  // Split selector in to tokens  var tokens = selector.split(' ');  var currentContext = new Array(document);  for (var i = 0; i < tokens.length; i++) {    token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;    if (token.indexOf('#') > -1) {      // Token is an ID selector      var bits = token.split('#');      var tagName = bits[0];      var id = bits[1];      var element = $(id);      if (!element || tagName && element.nodeName.toLowerCase() != tagName) {        // tag with that ID not found, return false        return new Array();      }            // Set currentContext to contain just this element      currentContext = new Array(element);      continue; // Skip to next token    }    if (token.indexOf('.') > -1) {      // Token contains a class selector      var bits = token.split('.');      var tagName = bits[0];      var className = bits[1];      if (!tagName) {        tagName = '*';      }      // Get elements matching tag, filter them for class selector      var found = new Array;      var foundCount = 0;      for (var h = 0; h < currentContext.length; h++) {        var elements;        if (tagName == '*') {            elements = getAllChildren(currentContext[h]);        } else {            elements = currentContext[h].getElementsByTagName(tagName);        }        for (var j = 0; j < elements.length; j++) {          found[foundCount++] = elements[j];        }      }      currentContext = new Array;      var currentContextIndex = 0;      for (var k = 0; k < found.length; k++) {        if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {          currentContext[currentContextIndex++] = found[k];        }      }      continue; // Skip to next token    }    // Code to deal with attribute selectors    if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/) ) {      var tagName = RegExp.$1;      var attrName = RegExp.$2;      var attrOperator = RegExp.$3;      var attrValue = RegExp.$4;      if (!tagName) {        tagName = '*';      }      // Grab all of the tagName elements within current context      var found = new Array;      var foundCount = 0;      for (var h = 0; h < currentContext.length; h++) {        var elements;        if (tagName == '*') {            elements = getAllChildren(currentContext[h]);        } else {            elements = currentContext[h].getElementsByTagName(tagName);        }        for (var j = 0; j < elements.length; j++) {          found[foundCount++] = elements[j];        }      }      currentContext = new Array;      var currentContextIndex = 0;      var checkFunction; // This function will be used to filter the elements      switch (attrOperator) {        case '=': // Equality          checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };          break;        case '~': // Match one of space seperated words           checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };          break;        case '|': // Match start with value followed by optional hyphen          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };          break;        case '^': // Match starts with value          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };          break;        case '$': // Match ends with value - fails with "Warning" in Opera 7          checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };          break;        case '*': // Match ends with value          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };          break;        default :          // Just test for existence of attribute          checkFunction = function(e) { return e.getAttribute(attrName); };      }      currentContext = new Array;      var currentContextIndex = 0;      for (var k = 0; k < found.length; k++) {        if (checkFunction(found[k])) {          currentContext[currentContextIndex++] = found[k];        }      }      // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);      continue; // Skip to next token    }        if (!currentContext[0]){    	return;    }        // If we get here, token is JUST an element (not a class or ID selector)    tagName = token;    var found = new Array;    var foundCount = 0;    for (var h = 0; h < currentContext.length; h++) {      var elements = currentContext[h].getElementsByTagName(tagName);      for (var j = 0; j < elements.length; j++) {        found[foundCount++] = elements[j];      }    }    currentContext = found;  }  return currentContext;}/* That revolting regular expression explained /^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/  \---/  \---/\-------------/    \-------/    |      |         |               |    |      |         |           The value    |      |    ~,|,^,$,* or =    |   Attribute    Tag*/

⌨️ 快捷键说明

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