今天打算在一个工程里面加上 jsValidation,却发现 validation-framework.js 在FireFox下没办法读取配置文件。搞半天才晓得原来是其中的 XmlDocument 类版本太老了。没关系,在 buffalo.js 里面有现成的,拷过来就能用了。

function XmlDocument() {
}
XmlDocument.create 
= function () {
    
try {
        
if (document.implementation && document.implementation.createDocument) {
            
var doc = document.implementation.createDocument(""""null);
            
if (doc.readyState == null) {
                doc.readyState 
= 1;
                doc.addEventListener(
"load"function () {
                    doc.readyState 
= 4;
                    
if (typeof doc.onreadystatechange == "function")
                        doc.onreadystatechange();
                }, 
false);
            }

            
return doc;
        }
        
if (window.ActiveXObject)
            
return new ActiveXObject(getDomDocumentPrefix() + ".DomDocument");
    }
    
catch (ex) {
    }
    
throw new Error("Your browser does not support XmlDocument objects");
};

而老版本的是酱紫滴:
function XmlDocument() {}
XmlDocument.create 
= function () {
    
if (document.implementation && document.implementation.createDocument) {
        
return document.implementation.createDocument(""""null);
    } 
else if (window.ActiveXObject) {
        
try {
            
var prefix = ["MSXML2""MSXML""Microsoft""MSXML3"];
            
for (var i = 0; i < prefix.length; i++) {
                
//return new ActiveXObject(prefix[i] + ".DomDocument");
                var obj = new ActiveXObject(prefix[i] + ".DomDocument");
                
if (obj == null || typeof(obj) == 'undefined') {
                    
continue;
                } 
else {
                    
return obj;
                }
            }
        } 
catch (e) {
            
//^_^
            throw new Error("My God, What version of IE are you using? IE5&+ is requiered.");
        }
    } 
else
        
throw new Error("Cannot create DOM Document!");
}