diff --git a/preview.html b/preview.html index 0f0388d..34155c0 100644 --- a/preview.html +++ b/preview.html @@ -4,8 +4,8 @@ - - + + diff --git a/rss.xsl b/rss.xsl index a26b254..6c1ed58 100644 --- a/rss.xsl +++ b/rss.xsl @@ -19,7 +19,7 @@

- +

@@ -60,7 +60,7 @@
- + (, )
diff --git a/rsspreview.js b/rsspreview.js index bcde828..0d6bc9c 100644 --- a/rsspreview.js +++ b/rsspreview.js @@ -11,36 +11,209 @@ window.hasRun = true; - var rootNode = document.getRootNode().documentElement; - // for chrome - var d = document.getElementById("webkit-xml-viewer-source-xml"); - if (d && d.firstChild) - rootNode = d.firstChild; + function xhrdoc(url, type, cb) { - const rootName = rootNode.nodeName.toLowerCase(); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + + xhr.responseType = 'document'; + xhr.overrideMimeType('text/' + type); + + xhr.onload = function () { + if (xhr.readyState === xhr.DONE) { + if (xhr.status === 200) { + var resp = (type=="xml") ? xhr.responseXML : xhr.response; + cb(resp); + } + } + }; + + xhr.send(null); + + } - var isRSS1 = false; - if (rootName == "rdf" || rootName == "rdf:rdf") { - if (rootNode.attributes['xmlns']) { - isRSS1 = (rootNode.attributes['xmlns'].nodeValue.search('rss') > 0) + + function applyxsl(xmlin, xsl, node, doc=document) { + + var xsltProcessor = new XSLTProcessor(); + xsltProcessor.importStylesheet(xsl); + + var fragment = xsltProcessor.transformToFragment(xmlin, doc); + node.appendChild(fragment); + + } + + function formatdescriptions() { + + // unescapes descriptions to html + + var tohtml = document.getElementsByClassName("feedEntryContent"); + for (var i = 0; i 0) + i = Math.floor( Math.log(size) / Math.log(1024) ); + return ( size / Math.pow(1024, i) ).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; + }; + + var encsz = document.getElementsByClassName("enclosureSize"); + for (var i = 0; iFeed URL'; + } - var url = "preview.html?" + encodeURIComponent(feed_url); - url = chrome.extension.getURL(url); + function detect() { - // redirect to preview page with feed url as query string - window.location.replace(url); + var rootNode = document.getRootNode().documentElement; + + // for chrome + var d = document.getElementById("webkit-xml-viewer-source-xml"); + if (d && d.firstChild) + rootNode = d.firstChild; + + const rootName = rootNode.nodeName.toLowerCase(); + + + var isRSS1 = false; + if (rootName == "rdf" || rootName == "rdf:rdf") { + if (rootNode.attributes['xmlns']) { + isRSS1 = (rootNode.attributes['xmlns'].nodeValue.search('rss') > 0) + } + } + + + if ( rootName == "rss" || rootName == "channel" // rss2 + || rootName == "feed" // atom + || isRSS1 ) { + + + return rootNode; + + } + + return null; } + + function extensionimages() { + + var extimgs = document.getElementsByClassName("extImg"); + for (var i = 0; i