jqueryajax不能返回XML的问题

如果返回的是个XML字符流而不是XML文件还是要将其转换为XML对象才可正常解析。

如下:

var xmlObject = new ActiveXObject(“Msxml.DOMDocument”);

xmlObject.async = false; 

xmlObject.loadXML(message);

$(xmlObject).find(“op”).each(function(){

  var ss = $(this).text();

  var aa = ss.split(“|”);

  var key = aa[0];

  var name = aa[1];

});

记得将datatype:xml修改成datatype:html

JavaScript代码在IE和Firefox间的区别

1. HTML 对象的 id 作为对象名的问题

  IE:HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用

  FF:不支持

  解决方法:使用document.getElementById替代document.all

  2. 如果控件只有name,没有id, 用getElementById时:

  IE:可以找到对象

  FF:返回NULL

  解决方法:所有控件必须设置ID属性

  3. Evel:

  IE:支持,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象

  FF:不支持。

  解决方法:统一使用getElementById(idName) 代替 eval(idName)。

  4. Event:

  IE:用全局对象window.event

  FF:event只能在事件发生的现场使用,在调用函数时传入event对象

  解决方法:使用之前做一下浏览器类型判断,各用各的。

  5. 对象名称中美元符号‘$’改为使用下划线‘_’

  6. 集合类对象问题

  IE:可以使用()或[]获取集合类对象

  FF:只能使用[]获取集合类对象

  现有代码中存在许多,不能在 FF 下运行

  解决方法:统一使用[]获取集合类对象。document.form.item(“itemName”) 这样的语句改为document.form.elements[“elementName”]

  7. 变量名与某 HTML 对象 id 相同的问题

  IE:不能使用与 HTML 对象 id 相同的变量名

  FF:可以使用

  解决方法:在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。

  此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。

  8. Event定位问题

  IE:支持event.x 和event.y

  FF:支持event.pageX和event.pageY

  解决方法,统一使用event.clientX和event.clientY,但是在FF中event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。如果要完全一样,可以判断浏览器类型后对应使用。

  9. 父结点的问题

  IE:parentElement parentElement.children

  FF:parentNode parentNode.childNodes

  childNodes的下标的含义在IE和FF中不同,FF使用DOM规范,childNodes中会插入空白文本节点。一般可以通过node.getElementsByTagName()来回避这个问题。

  当html中节点缺失时,IE和FF对parentNode的解释不同,例如

 


 <form> 
<table
  <input/> 
</table> 
</form>

 

  IE:input.parentNode的值为空节点

  FF:input.parentNode的值为form

  FF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

  10. const 问题

  现有问题:

  IE:不支持 const 关键字。如 const constVar = 32; 在IE中这是语法错误。

  FF:支持

  解决方法:不使用 const ,以 var 代替。

  11. body 对象

  IE:在body标签完全被读入之后才存在

  FF:在body标签没有被浏览器完全读入之前就存在

  12. 自定义属性问题

  IE:可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性

  FF:只能使用getAttribute()获取自定义属性.

  解决方法:统一通过getAttribute()获取自定义属性

  13. event.srcElement问题

  IE:even.srcElement

  FF:even.target

  解决方法:使用时判断浏览器类型,各用各的。

  14. 模态和非模态窗口

  IE:支持模态和非模态窗口

  FF:不支持

  解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。

  15. innerText

  IE:innerText

  FF:textContent

  16. 类似 obj.style.height = imgObj.height 的语句

  IE:有效

  FF:无效

  解决方法:统一使用obj.style.height = imgObj.height + ‘px’;

 

js实现多张图片切换效果

js实现多张图片切换效果

<script language=”JavaScript”>
var imgUrl=new Array();
var imgLink=new Array();
var imgText=new Array();
var picNum=0;
imgUrl[1]=”图片地址一”;
imgLink[1]=”链接1″;
imgText[1]=”标题或简介或其它HTML内容1″;
imgUrl[2]=”图片地址二”;
imgLink[2]=”链接2″;
imgText[2]=”标题或简介或其它HTML内容2″;
imgUrl[3]=”图片地址三”;
imgLink[3]=”链接3″;
imgText[3]=”标题或简介或其它HTML内容3″;
imgUrl[4]=”图片地址四”;
imgLink[4]=”链接4″;
imgText[4]=”标题或简介或其它HTML内容4″;
imgUrl[5]=”图片地址五”;
imgLink[5]=”链接5″;
imgText[5]=”标题或简介或其它HTML内容5″;

function NextPic(){
if(picNum<4) picNum++ ;//显示4个图片
else picNum=1;
if (document.all){
//下面注意,如果存在于FORM表单中,需要使用下面的方法,否则可直接使用name。
document.imgInit.filters.revealTrans.Transition=Math.floor(Math.random()*23);
document.imgInit.filters.revealTrans.apply();
document.imgInit.filters.revealTrans.play();
}
document.images.imgInit.src=”/blog/imgUrl[picNum]”;
//如果不是图片,而是SWF等,可做判断,内容可在程序中做好,再放于下面。
focustext.innerHTML='<a href=”/blog/+imgLink[picNum]+” target=_blank>’+imgText[picNum]+'</a>’;
//设置翻页时间
theTimer=setTimeout(‘NextPic()’, 3000);
}

function goUrl(){
window.open(imgLink[picNum],’_blank’);
}
</script>

HTML代码中:
可以做到控件中
<TABLE cellPadding=0 width=100% border=0>
<TR>
<TD align=middle height=”140″ >
<div align=’center’>
<a href=’javascript:goUrl()’><img style=”FILTER: revealTrans(duration=2,Transition=5)” src=”javascript:NextPic()” width=”170″ height=”120″ border=”1″ id=imgInit name=imgInit></a></TD></TR>
<TR><TD align=middle height=”38″ ><div name=focustext id=focustext align=’center’></div>
</div>
</TD></TR></TABLE>

VBS中使用WMI事件处理监控系统进程

OA项目中遇到这样一个问题:用户起草一种类型的公文,编辑word正文时希望能够将公文中的一些内容自动带到正文中,这个无非就是从服务器上把公文所对应的word正文文件下载到本地,替换掉里面指定内容的事,问题的关键在于替换掉内容后,或者用户填写了内容后,关闭word文件,如何监听此事件以在word程序退出后将此文件上传到服务器,不然,用户岂不是只是在本地做了修改,毫无用处。google了很久,终于解决了此问题,过程如下:

<html>
	<body onload="download(34567);init("C://Temp/" + 34567 + ".doc");replacefile();wordlistener();">
	</body>
</html>
<script language="javascript">
	//根据公文ID下载文件
	function download(objID){
		doDownload(objID);	
	}
	function upload(filepath){
		doUpload(filepath);	
	}
</script>
<script language="vbscript">  
	'定义变量 开始
	'定义操作word文件的相关变量
	Dim myDocApp
	Dim myDoc
	Dim objSelection
	Dim wordfilepath
	'定义变量 结束
	
	'初始化 开始
	'设置操作word文件的相关变量
	function init(filepath)
		Set myDocApp = CreateObject("Word.Application")
		myDocApp.Visible = True
		myDocApp.Activate
		myDocApp.Application.ScreenUpdating = False
		set myDoc = myDocApp.Documents.Open(filepath)
		Set objSelection = myDocApp.Selection
		Set wordfilepath = filepath
	end function
	'初始化 结束
	
	'替换文件使用VBS 开始
	'对下载到本地的公文模板进行内容替换
	function replacefile()
		replace "#departname#","办公室"
		replace "#username#","张三"
		replace "#createDate#","2009-12-17"
	end function
	'替换文件使用VBS 结束

	'替换函数 开始
	function replace(text,replacetext)
    With objSelection.Find
        .Text = text
        .Replacement.Text = replacetext
        .Forward = True
        .Wrap = 1
        .Execute ,,,,,,,,,,2
    End With
  end function
  '替换函数 结束 
  
  '监听系统进程的函数 开始
  function wordlistener()
		strComputer = "."
		Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
		Set objEventSource = objWMIService.ExecNotificationQuery _
		    ("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process'")
		Do While True
		    Set objEventObject = objEventSource.NextEvent()
		    If Ucase(Left(objEventObject.TargetInstance.Name, 7)) = "WINWORD" Then
		    	Select Case objEventObject.Path_.Class
		        '如果是打开
		        'Case "__InstanceCreationEvent"
		        		'在这里添加事件处理代码
		        '如果是关闭
		        Case "__InstanceDeletionEvent"
		            '在这里添加事件处理代码 上传文件
		            upload wordfilepath
		            Exit Do
		    	End Select
		    End If
		Loop
	end function
	'监听系统进程的函数 结束 
</script>

DWR中提供XML的传递方法

SomearrangementonDOM

I have seen a good introducing article about Dom(Document Object Model):

The purpose of this assignment was to learn how to use
JavaScript with the DOM(Document Object Model),
and about some of the properties
available through the DOM’s window object.

The description and my solution of the
DOM Properties-assignment can be viewed
at the bottom of this page.

What is DOM

The DOM is an API for HTML and XML documents.

It defines the structure of documents and the way to access that structure in favor for manipulating how the document will be presented, what the document’s content will be and how the document will be structured.

With this model programmers can create documents, navigate the document, add, change or delete elements and content.

A very common script language using DOM as a model is JavaScript. However, the model itself has noting to do with JavaScript, it is simply a model that can be used by any programming language or scripting language.

Care must be taken when using the DOM since many browsing software offer extensions not following the W3C standard.

What is the DOM Window Object 

The window object represents the window itself. It is created automatically with every instance of a <body> or <frameset> tag. The window object contains the document as a child and provides – among others objects – access to the useful window.navigator and window.screen objects. These two objects are often used for manipulating the browsing environment itself, and provides many special properties for accessing objects futher down the tree structure.

Assignment Description

Create a Web page with functionality for displaying the different properties of the window, window.screen, window.navigator window.location, window.history and window.document objects.

Original Address: http://www.webpelican.com/internet-programming-3/dom-properties/

dom Structure see: http://www.howtocreate.co.uk/tutorials/javascript/domstructure

Basic object model for all modern browsers:

window

|

————————————————————————–

| | | | |

navigator screen document history location

About typeof:

typeof
returns one of the following strings
:

  • number
  • string
  • boolean
  • object
  • function
  • undefined (= null )
typeof(typeof(x))
is always string
, no matter what x actually is.
IE seems to think that some functions are objects rather than functions: typeof(document.getElementById)
returns object.
I have done a testing code about all the objects in DOM, it concerns all the properties of all the objects.
Here is the code:

使用<!–//–>这样的html注释把js代码注起来的作用

一直不明白用eclipse代码提示功能生成<script></script>代码块的时候,会使用<!– //–>这样的html注释把js代码注起来。之前在各大搜索引擎找寻答案一直未果,今天无意中在w3school看到了答案。真是那个柳暗花明什么什么的,在此记录一下。

如何与老的浏览器打交道

那些不支持 JavaScript 的浏览器会把脚本作为页面的内容来显示。为了防止这种情况发生,我们可以使用这样的 HTML 注释标签:

<html>
<body>
<script type="text/javascript">
<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>

 

注释行末尾的两个正斜杠是 JavaScript 的注释符号,它会阻止 JavaScript 编译器对这一行的编译。

 

不过,现在还有浏览器不支持js吗?

最简单的AJAX实例


高手莫入–最简单的AJAX实例
 
学习AJAX参考了网上大量的实例,学得很艰难,代码可读性太差。本例就是一个入门的Hello World,类似本例的程序网上也许有,但是绝非抄袭。
 
本例很模仿用户注册,输入过程中动态检查错误实时显示,效果图如下:


 
 

 
对着上面这个图,来写代码。
 
一、创建Java Web项目,并创建两个页面
 
a.html
<html> 
<body> 
<script language=“JavaScript”
        var req = null
        function test() { 
                //初始化 
                var code = document.all.code.value; 
                var name = document.all.name.value; 
                req = new ActiveXObject(“Microsoft.XMLHTTP”); 
                //设置属性,当后台处理完成后,回来调用myDeal方法。 
                req.onreadystatechange = myDeal; 
                //发出请求 
                req.open(“GET”“b.jsp code=” + code + “&name=” + name, “false”); 

                req.send(null); 
        } 
        function myDeal() { 
                if (req.readyState == 4) { 
                        //接收服务端返回的数据 
                        var ret = req.responseText; 
                        //处理数据 
                        document.all(“myDiv”).innerHTML = ret; 
                } 
        } 
</script> 

用户注册:<br> 
用户编号:<input type=“text” name=“code” onblur=“test();”>* <div id=“myDiv” name=“myDiv”></div><br> 
用户名称:<input type=“text” name=“name”><br> 
<input type=“button” value=“注册” onclick=“test();”

</body> 
</html>

 
创建处理表单数据的b.jsp
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %> 
<% 
        //接收参数 
        String code = request.getParameter(“code”); 
        String name = request.getParameter(“name”); 
        //控制台输出表单数据看看 
        System.out.println(“code=” + code + “,name=” + name); 
        //检查code的合法性 
        if (code == null || code.trim().length() == 0) { 
                out.println(“code can’t be null or empty”); 
        } else if (code != null && code.equals(“admin”)) { 
                out.println(“code can’t be admin”); 
        } else { 
                out.println(“OK”); 
        } 
%>
 
 
二、部署运行


 
 
 


 
 
呵呵,很简单吧~!

 

  • 大小: 26.7 KB
  • 大小: 26.4 KB
  • 大小: 26.8 KB

发一个简单的ajaxpush例子

上次回复了一个帖子(忘了是哪个了)发了一个ajax push的例子,但是好像发错了,不能运行,这次发个能运行的:

 

以下代码,放到服务下方可运行,如tomcat。

 

客户端 index.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=utf-8" />          
<title> ajax push </title>          
</head>          
<body>          
 ajax push test<hr>          
<textarea id="ta" rows="40" cols="90"></textarea><br>          
<button onclick="test()">test</button>       
<div id="inf"></div>  
</body>          
</html>          
<script language="JavaScript">          
<!--          
window.$i=function(id){return document.getElementById(id); }          
String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"");}          
        
function test()          
{          
    $i("ta").value = "loading...\n\n";          
    request();          
}          
function request()          
{          
    var req = createXMLHttp();          
            
    req.open("get", "push.jsp", true);          
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');          
    req.send(null);          
    req.onreadystatechange = function ()          
    {          
       
    
        if(req.readyState == 3)          
        {          
            $i("ta").value += req.responseText.trim()+"\n";          
        }          
        if(req.readyState == 4 && req.status == 200)          
        {          
             $i("ta").value += "end";          
         }          
    }          
}          
  
//创建XMLHttpRequest          
function createXMLHttp()          
{          
     if (window.ActiveXObject)          
    {          
         var arr = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];          
         for(var i=0 ; i < arr.length; i++)          
        {          
            try          
           {          
              return new ActiveXObject(arr[i]);          
           }catch(e){}          
        }          
    }          
    else if (window.XMLHttpRequest)          
    {          
        return new XMLHttpRequest();          
    }          
    alert("您的浏览器不支持ajax");          
    return null;          
}          
//-->          
</script> 

 

 服务端:push.jsp

<%@ page contentType="text/html;charset=utf-8"%>   
<%   
java.io.PrintWriter p=new   java.io.PrintWriter(response.getOutputStream());   
String msg = "a";   
for(int i=0;i<10;i++)   
{   
	 msg+=i;   
	 p.println("HTTP/1.1 200OK");   
	 p.println("Content-Type:text/html; charset:utf-8");   
	 p.println("Content-Length:"+msg.length());//msg为服务器要发到客户端的信息   
	 p.println();   
	 p.println(msg);   
	 System.out.println(msg);   
	 p.flush();   
	 response.getOutputStream().flush();   
	 try  
	 {   
	  Thread.sleep(1000);   
	 }   
	 catch(Exception e)   
	 { }   
}   
%>