开发者社区> 问答> 正文

JQuery.xslt.js修改问题

你好用了你修改过的JQuery.xslt.js 在IE9下测试没有问题 在火狐和谷歌下没有显示 也没有报错

这么用的不知道有没有用错 还请指教

var xsltUrl = "cdcatalog.xsl";
           $(function(){
               $.get("cdcatalog.xml", {}, function(d){
                   $("#data").xslt(d, xsltUrl, callback);
               }, "html");
           });
           
           var callback = function(){
           };

展开
收起
a123456678 2016-07-06 09:25:01 1878 0
1 条回答
写回答
取消 提交回答
  • 这是因为我之前有加一个样式的属性在里面,上传的时候忘记去掉了,现在代码已重新上传。

    $.fn.xslt = function(xml, xslt, addStyle, callback) {  //这里多了个参数addStyle
    去掉就好了,或者复制以下代码
    
    (function($) {
         
        $.fn.xslt = function() {
            return this;
        }
         
        var str = /^\s*</;
        if (document.recalc) { // IE 5+
            $.fn.xslt = function(xml, xslt, callback) {//, callback
                var target = $(this);
                var xm = new ActiveXObject("Microsoft.XMLDOM");
                xm.async = false;
                xm.loadXML(xml);
                $.get(xslt, function(data) {
                 target.html(xm.transformNode(data));             
                 if(typeof(callback) === 'function' ) callback.apply(this); 
                 });
                return this;
            };
        }
        else if ($.browser.msie && $.browser.version == "9.0") { //IE9
            $.fn.xslt = function(xml, xslt, callback) {  
                if (window.ActiveXObject) {  
                    var target = $(this);  
                     
                    var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0"); 
                   //裝載數據
                    xmlDoc.async = false; 
                    xmlDoc.loadXML(xml);    
                   //裝載樣式
                    var xslDoc = new ActiveXObject("Msxml2.DOMDocument.6.0"); 
                    xslDoc.async = false; 
                    xslDoc.resolveExternals = false; 
                    xslDoc.load(xslt);  
                    target.html(xmlDoc.transformNode(xslDoc));                       
                    if(typeof(callback) === 'function' ) callback.apply(this); 
                }  
                return this;  
            };  
        } 
        else if (window.DOMParser != undefined && window.XMLHttpRequest != undefined && window.XSLTProcessor != undefined) { // Mozilla 0.9.4+, Opera 9+
            var processor = new XSLTProcessor();
            var support = false;
            if ($.isFunction(processor.transformDocument)) {
                support = window.XMLSerializer != undefined;
            }
            else {
                support = true;
            }
            if (support) {
                $.fn.xslt = function(xml, xslt, callback) {
                    var target = $(this);
                    var transformed = false;
                    var xm = {
                        readyState: 4
                    };
                    var xs = {
                        readyState: 4
                    };
     
                    var change = function() {
                        if (xm.readyState == 4 && xs.readyState == 4 && !transformed) {
     
                            var processor = new XSLTProcessor();
                            if ($.isFunction(processor.transformDocument)) {
                                // obsolete Mozilla interface
                                resultDoc = document.implementation.createDocument("", "", null);
                                processor.transformDocument(xm.responseXML, xs.responseXML, resultDoc, null);
                                target.html(new XMLSerializer().serializeToString(resultDoc));                               
                            }
                            else {
                                processor.importStylesheet(xs.responseXML);
                                resultDoc = processor.transformToFragment(xm.responseXML, document);
                                target.empty().append(resultDoc);                                                
                            }
                            transformed = true;
                            if(typeof(callback) === 'function' ) callback.apply(this); 
                        }
                    };
                     
                     
                    if (str.test(xml)) {
     
                        xm.responseXML = new DOMParser().parseFromString(xml, "text/xml");
                    }
                    else {
     
                        xm = $.ajax({ dataType: "xml", url: xml });
                        xm.onreadystatechange = change;
                    }
     
                    if (str.test(xslt)) {
     
                        xs.responseXML = new DOMParser().parseFromString(xslt, "text/xml");
                        change();
                    }
                    else {
     
                        xs = $.ajax({ dataType: "xml", url: xslt });
                        xs.onreadystatechange = change;
                    }
                    return this;
                };
     
            }
        }
    })(jQuery);
    2019-07-17 19:51:51
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
23-Vue.js在前端...1506518547.pdf 立即下载
Javascript中的函数 立即下载
JavaScript函数 立即下载