获取js后所带的参数,如:a.js?a=value1&b=value2
作者:青锋幽灵 日期:2008-09-10 11:23
将以下代码保存为:a.js
JavaScript代码
- function querystring(){
- this.params = new Object();
- this.initialize = function(){
- var param=this.paramstring();
- if(param.length == 0) return;
- if(param.substring(0,1)=='?'){
- param=param.substring(1);
- }
- param = param.replace(/\+/g, ' ');
- var args = param.split('&');
- for (var i=0;i<args.length;i++){
- var value;
- var pair = args[i].split('=');
- var name = unescape(pair[0]);
- if (pair.length == 2)
- value = unescape(pair[1]);
- else
- value = name;
- this.params[name] = value;
- }
- };
- this.get = function(key, defvalue){
- return this.params[key]==null?defvalue:this.params[key];
- };
- this.paramstring = function(){
- var col=document.getElementsByTagName("script");
- var jsrc=col.item(col.length-1).src;
- var i=jsrc.indexOf("?");
- var words=jsrc.substr(i+1,jsrc.length);
- return(words);
- };
- this.initialize();
- }
- var q = new querystring();
- var a = q.get('a','defaultvalue'); //defaultvalue是默认值
- var b = q.get('b','defaultvalue'); //defaultvalue是默认值
调用:
XML/HTML代码
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <script type="text/javascript" src="a.js?a=baidu&b=google"></script>
- <title>无标题文档</title>
- </head>
- <body>
- <!--
- js运行结果将得到:
- a=baidu
- b=google
- -->
- </body>
- </html>
是不是很有趣呢?呵呵~~
标签: javascript 参数
Javacript+xml+DOM 浏览器兼容性问题
作者:青锋幽灵 日期:2008-09-09 15:13
javacript中对xml dom的支持,与其他任何特性一样面临着浏览器兼容问题。
一 IE中的XML DOM
1.微软通过ActiveX的MSXML库提供了支持,通过:
var oXmlDom = new ActiveXObject("MSXML2.DOMDocument.5.0")得到一个XML DOM对象,这是在IE6中的,如果你的IE是更老版本的,可以使用下面的函数得到,如果你没有安装MSXML,将不能得到:
[code]
function createXMLDOM() {
var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
一 IE中的XML DOM
1.微软通过ActiveX的MSXML库提供了支持,通过:
var oXmlDom = new ActiveXObject("MSXML2.DOMDocument.5.0")得到一个XML DOM对象,这是在IE6中的,如果你的IE是更老版本的,可以使用下面的函数得到,如果你没有安装MSXML,将不能得到:
[code]
function createXMLDOM() {
var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
一个简单的Ajax类
作者:青锋幽灵 日期:2008-09-08 11:44
JavaScript代码
- /**
- Powered By CMSDream Copyright © 2007-2008 All rights reserved.
- 14:21 2008-5-10
- **/
- function CMSDreamAjaxLib(){
- /**//**
- 成员变量
- */
- this.XMLHttpReq = null; //XML对象
- this.method = "post"; //执行的方法(post/get)
- this.url = ""; //异步调用的页面地址
- this.responseText = ""; //异步返回的响应字符串
- this.responseXML = ""; //异步返回的响应XML
- this.failed = false; //创建对象错误标志
- /**//**
- 事件区
- */
- this.onLoading = function() {}; //正在发送请求
- this.onLoaded = function() {}; //已经接收到全部响应内容
- this.onInteractive = function() {}; //正在解析响应内容
- this.onCompletion = function() {}; //响应内容解析完成
- this.onError = function() {}; //异步错误处理事件
- this.onFail = function() {}; //创建对象失败处理世界
- /**//**
- 重置所有事件函数
- */
- this.resetFunctions = function() {
- this.onLoading = function() {};
- this.onLoaded = function() {};
- this.onInteractive = function() {};
- this.onCompletion = function() {};
- this.onError = function() {};
- this.onFail = function() {};
- };
- /**//**
- 初始化函数(构造时自动初始化)
- */
- this.init = function(){
- if(window.XMLHttpRequest){
- this.XMLHttpReq = new XMLHttpRequest();
- }else if (window.ActiveXObject){
- try{this.XMLHttpReq = new ActiveXObject("Msxml4.XMLHTTP");}
- catch(e){
- try{this.XMLHttpReq = new ActiveXObject("Msxml3.XMLHTTP");}
- catch(e){
- try{this.XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");}
- catch(e){
- try{this.XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");}
- catch(oc){this.failed=true;}
- }
- }
- }
- }
- };
- /**//**
- 发送请求函数
- @param data 发送的数据
- @example send("id=1");
- */
- this.send=function(data){
- var self=this;
- if(this.method=="post") {
- this.XMLHttpReq.open(self.method,self.url,true);
- }else{
- this.XMLHttpReq.open(self.method,self.url+"?"+encodeURI(data),true);
- }
- //添加消息响应头
- this.XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
- //异步回调函数
- this.XMLHttpReq.onreadystatechange = function(){
- //对象未创建
- if (self.failed) {
- self.onFail();
- return;
- }
- //消息响应标志
- switch (self.XMLHttpReq.readyState) {
- case 1:{
- self.onLoading();
- break;
- }
- case 2:{
- self.onLoaded();
- break;
- }
- case 3:{
- self.onInteractive();
- break;
- }
- case 4:{
- self.responseText = self.XMLHttpReq.responseText;
- self.responseXML = self.XMLHttpReq.responseXML;
- self.onCompletion();
- break;
- }
- }
- };
- if(this.method=="post"){
- this.XMLHttpReq.send(data); //发送请求
- }else{
- this.XMLHttpReq.send(); //发送请求
- }
- };
- this.abort=function(){
- this.XMLHttpReq.abort();
- }
- this.close=function(){
- this.XMLHttpReq=null;
- }
- this.init();
- }
标签: ajax javascript
动态加载样式元素的函数(兼容IE,FireFox,Opera)
作者:青锋幽灵 日期:2008-09-07 11:34
如题,目前只对IE,FireFox,Opera这三种浏览器的兼容性进行过测试,其它浏览器还未测试。
有兴趣的朋友可以研究一下,应该也没问题的。
JavaScript代码
- function AttachStyle(styDom, styCss, styId){
- var istyle = styDom.createElement('style');
- istyle.setAttribute("type", "text/css");
- if(styId!=null){if(!document.getElementById(styId)){istyle.setAttribute("id", styId);}}
- if (istyle.styleSheet){
- istyle.styleSheet.cssText=styCss;
- }else{
- istyle.appendChild(styDom.createTextNode(styCss));
- }
- styDom.getElementsByTagName("head")[0].appendChild(istyle);
- }
应用代码:
JavaScript代码
- if(!document.getElementById('attach-css-1')){
- var iCss='';
- iCss+='.test-style1 {font-size:18px;color:#f60;}';
- iCss+='.test-style2 {font-size:16px;color:#f60;}';
- iCss+='.test-style3 {font-size:14px;color:#f60;}';
- iCss+='.test-style4 {font-size:12px;color:#f60;}';
- AttachStyle(document,iCss,'attach-css-1');
- }
- /**
- 大家可以测试一下 test-style1,test-style2,test-style3 这三个样式变化了吗?
- **/
在非IE浏览器下兼容IE的event
作者:青锋幽灵 日期:2008-09-06 15:50
JavaScript代码
- if(!document.all){
- HTMLElement.prototype.__defineGetter__("runtimeStyle", function(){
- return this.style;
- });
- window.constructor.prototype.__defineGetter__("event", function(){
- return __window_event_constructor();
- });
- Event.prototype.__defineGetter__("srcElement", function(){
- return this.target;
- });
- function __window_event_constructor(){
- if(document.all){
- return window.event;
- }
- var _caller = __window_event_constructor.caller;
- while(_caller!=null){
- var _argument = _caller.arguments[0];
- if(_argument){
- var _temp = _argument.constructor;
- if(_temp.toString().indexOf("Event")!=-1){
- return _argument;
- }
- }
- _caller = _caller.caller;
- }
- return null;
- }
- }
只要在页面运行时加上以上代码,非IE浏览器也可以使用IE特有的event事件了。 :)
非常好用的Js的querystring类
作者:青锋幽灵 日期:2008-06-07 15:57
JavaScript代码
- /**
- Powered By CMSDream Copyright © 2007-2008 All rights reserved.
- 15:10 2008-6-7
- **/
- function querystring(paramstring){
- this.url=window.location.href;
- this.params = new Object();
- this.initialize = function(){
- if(paramstring.length == 0) return;
- if(paramstring.substring(0,1)=='?'){
- paramstring=paramstring.substring(1);
- }
- paramstring = paramstring.replace(/\+/g, ' ');
- var args = paramstring.split('&');
- for (var i=0;i<args.length;i++){
- var value;
- var pair = args[i].split('=');
- var name = unescape(pair[0]);
- if (pair.length == 2)
- value = unescape(pair[1]);
- else
- value = name;
- this.params[name] = value;
- }
- };
- this.get = function(key, defvalue){
- return this.params[key]==null?defvalue:this.params[key];
- };
- this.setkey = function(key,value){
- var fragPos = this.url.lastIndexOf("#");
- var fragment = "";
- if(fragPos > -1){
- fragment = this.url.substring(fragPos);
- this.url = this.url.substring(0,fragPos);
- }
- var querystart = this.url.indexOf("?");
- if(querystart<0){
- this.url +="?"+key+"="+value;
- }else if(querystart==this.url.length-1){
- this.url +=key+"="+value;
- }else{
- var Re = new RegExp(key+"=[^\\s&#]*","gi");
- if (Re.test(this.url)){
- this.url=this.url.replace(Re,key+"="+value);
- }else{
- this.url += "&"+key+"="+value;
- }
- }
- return this.url;
- };
- this.initialize();
- }
调用代码:
JavaScript代码
- //假设网址为:http://www.a.com/aa.htm?a=value1&b=value2
- var q = new qerystring(location.search);
- //如果取不到值用第二个参数作为默认值。
- var a = q.get('a','defaultvalue');
- var b = q.get('b','defaultvalue');
- /*
- 运行结果:
- a=value1
- b=value2
- */
- /***********************************
- 如果要将网址插入一个参数
- 如:http://www.a.com/aa.htm?a=value1&b=value2&page=3
- ************************************/
- var q = new qerystring(location.search);
- var url = q.setkey('page','3');
- //url 是所得的结果
- 1
