Show
Ignore:
Timestamp:
09/19/07 05:15:43 (16 months ago)
Author:
cho45
Message:

lang/javascript/userchrome/grddl.uc.js:

html profile で指定された先の profileTransformation をよむ処理を追加
ステータスアイコンをクリックするたびに同期リクエストが発生するので
該当ページでは XSLT のリストがでるまで長め

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/userchrome/grddl.uc.js

    r212 r213  
    150150                // HTML Profiles section. 
    151151                if (profile && profile != "http://www.w3.org/2003/g/data-view") { 
    152                         // TODO: 
     152                        var req = new XMLHttpRequest(); 
     153                        req.open("GET", profile, false); 
     154                        req.send(null); 
     155                        var parser = new DOMParser(); 
     156                        var profileDoc = parser.parseFromString(req.responseText, "text/xml"); 
     157                        xsltList = xsltList.concat(this.X(profileDoc, "/h:html/h:head/h:link[@rel='profileTransformation']").map(function (l) { 
     158                                return this.resolveURI(l.getAttribute("href"), profile); 
     159                        }, this)); 
    153160                } 
    154161 
     
    161168        }, 
    162169 
    163         resolveURI : function (to) { 
     170        resolveURI : function (to, uri) { 
    164171                var simpleURI = Components.classes["@mozilla.org/network/simple-uri;1"] 
    165172                                          .createInstance(Components.interfaces.nsIURI); 
    166                 simpleURI.spec = content.document.location.href; 
     173                simpleURI.spec = uri || content.document.location.href; 
    167174                return simpleURI.resolve(to); 
    168175        }, 
     
    170177        translate : function (xslUri) { 
    171178                var doc = content.document; 
     179 
     180                if (doc.contentType == "text/html") { 
     181                        // FIXME: document から直接ソース (Gecko に解釈されていない) をとる方法がわからん…… 
     182                        var req = new XMLHttpRequest(); 
     183                        req.open("GET", doc.documentURI, false); 
     184                        req.send(null); 
     185                        var parser = new DOMParser(); 
     186                        doc = parser.parseFromString(req.responseText, "text/xml"); 
     187                } 
     188 
     189                var self = this; 
    172190                var req = new XMLHttpRequest(); 
    173191                req.open("GET", xslUri, true); 
     
    176194                        var xsltp = new XSLTProcessor(); 
    177195                        xsltp.importStylesheet(xslt); 
     196                        // たまにフリーズする。セッション新規にするとなおる? 謎 
    178197                        var rdf = xsltp.transformToDocument(doc); 
    179198 
     
    182201                        var dataUri = "data:text/xml," + encodeURI(xml); 
    183202                        var newTab = gBrowser.addTab(dataUri); 
    184 //                      gBrowser.selectedTab = newTab; 
     203                        gBrowser.selectedTab = newTab; 
    185204                }; 
    186205                req.send(null);