旧代码回顾:YUI

编程入门 行业动态 更新时间:2024-10-07 01:34:03

旧<a href=https://www.elefans.com/category/jswz/34/1771412.html style=代码回顾:YUI"/>

旧代码回顾:YUI

YUI-ext 代码两侧

旧时,写 yuiext 的代码的时候便学习过这些代码,两侧都是制作动画的代码。时间大概是两年前左右(07年初),但心路历程感觉是过了许久 呵呵,真的有天上十天,地下十年的感觉。那时候,靠自学,瞎浑的什么的都不懂,往这几句 script 撞呀撞呀,撞到做出效果为止!这不,一番经历,好歹也认识不少:JS 的道路并不坦,学 ajax 真的要下苦功!

言毕,丑汉终需见家翁,呵呵。下是那时稚嫩的代码。

XML数据岛 with 分页

纯客户端解决方案,呵呵在当年还是蛮实用的技巧,出来的效果也是“无刷新”的加载XML,包括可分页。就是这份小脚本,小弟愚钝,啃了不少的时间。删掉怪可惜,放这儿算是一份纪念帖吧

记得早期把玩 yui-ext 时候,曾经给一个函数折腾得几度想放弃 yui-ext。所说的那个函数就是就是 onReady

    /* * 注册浏览器的DOMContentLoaded事件,@todo 有自我卸载的功能。 * @param { Function } onready [必填]在DOMContentLoaded事件触发时需要执行的函数 */  function onReady(onready){  var isReady = false;  function doReady(){  if( isReady ) return;  //确保onready只执行一次  isReady = true;  onready();  }  if(window.navigator.isIE8){/*IE*/  (function(){  if ( isReady ) return;  try{  document.documentElement.doScroll("left");  }catch( error ) {  setTimeout( arguments.callee, 0 );  return;  }  doReady();  })();  //window.attachEvent('onload',doReady);  }else if (window.navigator.isWebkit && window.navigator.webkitVersion < 525){/*Webkit*/  (function(){  if(isReady) return;  if (/loaded|complete/.test(document.readyState)){  doReady();  }else{  setTimeout( arguments.callee, 0 );  }  })();  //window.addEventListener('load',doReady,false);  }else{                                                                /*FF Opera 高版webkit 其他*/  document.addEventListener("DOMContentLoaded", doReady, false);  //document.removeEventListener( "DOMContentLoaded", arguments.callee, false );  }  }  

精简版:

function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}  

.html#0-tsina-1-29606-397232819ff9a47a7b7e80a40613cfe1

跨组件使用WSC组件对象

WSC 组件就是微软平台上脚本的模块化。在笔者的实践过程中,研究出一套灵活传递对象的方法,其实质就是送入 host.eval 函数的引用。见下面的 WSC 组件例子:

<?xml version="1.0" encoding="UTF-8"?>
<package><component id="deepcms"><?component error="true" debug="true"?><implements type="ASP" id="ASP" /><registration progid="deepcms" /><public><method name="getEdk" /><method name="getExtDirect" /><method name="getDeepBlog" /><method name="getDeepCMS" /><method name="domain"><PARAMETER name="ns" /></method></public><script type="text/javascript">with(new ActiveXObject('package_loader')){init({evalFn     : eval,edk_folder : 'd:/projects/edk'});_import('core');_import('asp');var folder = Application.Contents('edk_root');var entity = Server.mappath('/app/deepcms/service/entity.js');_import(null, entity);var page = Server.mappath('/app/deepcms/service/page.js');_import(null, page);var deepcms_config = Server.mappath('/app/app/config/config.js');_import(null, deepcms_config);var deepcms_news = Server.mappath('/app/app/news/news.js');_import(null, deepcms_news);var deepcms_user = Server.mappath('/app/app/user/user.js');_import(null, deepcms_user);}function getEdk(){return $;}function getExtDirect(){return Ext.direct;}function getDeepBlog(){return DeepBlog;}function domain(ns){return $.Model.init.call(eval(ns));}function getDeepCMS(){return DeepCMS;}</script></component>
</package>

通过GetObject()调用:

// D:/dev/new/news/news.wsc
$$ = GetObject("script:" + Server.mappath('/libs/edk/edk-server/edk.wsc').replace(/\\/g, '/')).getEdk();

附送一个小脚本,有时很有用。

var wshObj = new ActiveXObject("WScript.Shell");
var code = wshObj.run('testServer fileServer.js', 0/*  不显示GUI,后台运行 */, false /*不等待程序,也就是执行之后就好*/);
alert('已启动node服务器!\n运行代码' + code);
close();

WScript.Shell 常用命令

WScript = {/*** 不显示UI,以后台执行的方式运行程序。* @param	{String} cmd* @return	{Number}*/quietRun : function (cmd){var wshObj = new ActiveXObject("WScript.Shell");return wshObj.run(cmd, 0/*  不显示GUI,后台运行 */, false /*不等待程序,也就是执行之后就好*/);}/*** 目录选择器。* @param 	{String}			str* @return 	{Shell.Application}*/,showFolderPickuper : function (str){var objFolder = new ActiveXObject("Shell.Application").BrowseForFolder(0,str || "请选择一个目录。",0,0x11);return objFolder ? objFolder.Self.Path : '';}/*** 在脚本中创建浏览器窗体 适合WSC使用。*/,createBrowser : function (){with(new ActiveXObject("InternetExplorer.Application")){visible		=	false;addressBar	=	false;menuBar		=	false;statusBar	=	false;toolBar		=	false;resizable	=	true;left		=	300;top			=	200;width		=	300;height		=	240;silent		=	true;navigate("http://localhost");/*Document.title="VBScript 创建的窗口";Document.body.bgColor="#ECE9D8";Document.body.style.overflow="hidden";Document.body.style.borderWidth="0";Document.body.innerHtml="hi  ";*/visible		=	true;}}/*** 显示系统变量,包括"Process"、"User"和"System"。* @return {Object}*/,showSystemVars : function (){var wshObj = new ActiveXObject("WScript.Shell");var args 	= ["Process", "User", "System"],result	= {},item,e;for(var i = args.length-1; i >= 0; i--){result[args[i]] = {};for(e  = new Enumerator(wshObj.Environment(args[i])); !e.atEnd(); e.moveNext()){var item = e.item().split("=");result[args[i]][item[0]] = item[1];}}return result;}/*** 添加系统环境变量。* @param	{Sting} 	key* @param	{String}	value* @return	{String}*/,addEnvVar : function (key, value){var wshObj = new ActiveXObject("WScript.Shell");var oSysEnv = wshObj.Environment("SYSTEM");if(!oSysEnv(key) && oSysEnv(key).indexOf(value) == -1){oSysEnv(key) = value;}else{alert(value + '已经在了');}return oSysEnv(key);}/*** 添加PATH环境变量* @param {String} v 目录字符串*/,addPath : function (v){var wshObj  = new ActiveXObject("WScript.Shell");var oSysEnv = wshObj.Environment("SYSTEM");if( oSysEnv("Path").indexOf(v) == -1){oSysEnv("Path") += ';' + v;}else{alert('警告:该条目' + v +'已存在!');}return oSysEnv("Path");}/*** 获取系统文件夹。通过字体目录获取的。* @credit .html*/,getSpecialFolder: function(type){var fontPath = shell.SpecialFolders("Fonts");var winPath = fontPath.slice(0, fontPath.lastIndexOf("\\"));switch(type){case "windows":return winPath;break;case "system32":return winPath + "\\system32";break;default:return shell.SpecialFolders(type);break;}}
};

更多推荐

旧代码回顾:YUI

本文发布于:2024-02-07 08:05:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754643.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:代码   YUI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!