From 39c3d23a79705caa7441a3cce47ed26ff9d7599b Mon Sep 17 00:00:00 2001 From: JJfutbol Date: Thu, 9 Jul 2009 01:51:25 +0000 Subject: - updated css, deployed readability on lab.arc90.com had some changes not included - added user font size and family styles to print css - added twitter link to index page and styles to css - updated readability-start.js to now use a dynamic lookup of the baseHref - added check for console object, creates blank object if not defined - this way we can hold onto the current debugging for now safely git-svn-id: http://arc90labs-readability.googlecode.com/svn/trunk@60 d4e419ec-0920-11de-bbfd-a7c1bc4c261e --- js/readability-start.js | 21 ++++++---------- js/readability.js | 65 ++++++++++++++++++++----------------------------- 2 files changed, 35 insertions(+), 51 deletions(-) (limited to 'js') diff --git a/js/readability-start.js b/js/readability-start.js index 4263ab2..3d6d654 100755 --- a/js/readability-start.js +++ b/js/readability-start.js @@ -1,25 +1,24 @@ -var defaultMargin = "margin-wide"; -var defaultSize = "size-large"; -var defaultStyle = "style-newspaper"; +var margin = "margin-wide"; +var size = "size-large"; +var style = "style-newspaper"; var baseHref = window.location.toString().match(/.*\//); var linkStart = "javascript:(function(){"; -var linkEnd = "var elements=document.getElementsByTagName('HEAD');var headElement;if(elements.length>=1){headElement=elements[0];}else{headElement=document.createElement('HEAD');document.documentElement.appendChild(headElement);}_readability_script=document.createElement('SCRIPT');_readability_script.type='text/javascript';_readability_script.src='" + basehref + "js/readability.js?x='+(Math.random());headElement.insertBefore(_readability_script,headElement.firstChild);_readability_css=document.createElement('LINK');_readability_css.rel='stylesheet';_readability_css.href='" + basehref + "css/readability.css';_readability_css.type='text/css';headElement.insertBefore(_readability_css,headElement.firstChild);_readability_print_css=document.createElement('LINK');_readability_print_css.rel='stylesheet';_readability_print_css.href='" + basehref + "css/readability-print.css';_readability_print_css.media='print';_readability_print_css.type='text/css';headElement.insertBefore(_readability_print_css,headElement.firstChild);})();"; +var linkEnd = "var elements=document.getElementsByTagName('HEAD');var headElement;if(elements.length>=1){headElement=elements[0];}else{headElement=document.createElement('HEAD');document.documentElement.appendChild(headElement);}_readability_script=document.createElement('SCRIPT');_readability_script.type='text/javascript';_readability_script.src='" + baseHref + "js/readability.js?x='+Math.random();headElement.insertBefore(_readability_script,headElement.firstChild);_readability_css=document.createElement('LINK');_readability_css.rel='stylesheet';_readability_css.href='" + baseHref + "css/readability.css';_readability_css.type='text/css';headElement.insertBefore(_readability_css,headElement.firstChild);_readability_print_css=document.createElement('LINK');_readability_print_css.rel='stylesheet';_readability_print_css.href='" + baseHref + "css/readability-print.css';_readability_print_css.media='print';_readability_print_css.type='text/css';headElement.insertBefore(_readability_print_css,headElement.firstChild);})();"; $(document).ready(function() { - // load example with defaults - applyChange("margin", defaultMargin); - applyChange("size", defaultSize); - applyChange("style", defaultStyle); + // load example with defaults at first + applyChange("margin", margin); + applyChange("size", size); + applyChange("style", style); // helper that takes the user input and customizes the bookmarklet source function applyChange(property, value) { var example = document.getElementById("example"); var article = document.getElementById("articleContent"); - var size, style, margin; // determine the property that is being changed switch (property) @@ -49,10 +48,6 @@ $(document).ready(function() applyChange(this.name, this.value); }); - $("#settings input").bind("click", function(){ - applyChange(this.name, this.value); - }); - // the user needs to drag the bookmarklet link to their bookmarks bar, but // if they don't notify them what to do (unique case for IE) $("#bookmarkletLink").bind("click", function(){ diff --git a/js/readability.js b/js/readability.js index 5619c38..ce8fb52 100755 --- a/js/readability.js +++ b/js/readability.js @@ -1,8 +1,19 @@ -var readabilityVersion = "v1.0.0.1"; +var readabilityVersion = "1.0.0.1"; var emailSrc = "http://proto1.arc90.com/readability/email.php"; var highestScore = -1; var malformedContent = false; +// for now we want to hold on to our debugging, but if a browser doesn't +// support it, we'll create a console.log() method that does nothing +if (typeof console == 'undefined') +{ + var console = {}; + + console.log = function(msg) { + return; + }; +} + (function(){ // some sites use plugins (jCarousel) that when Readability removes scripts // or does something funky it causes an alert to appear every few seconds, @@ -141,36 +152,8 @@ function determineContentScore(score, parent, element) function parseContent() { - // replace all doubled-up
tags with

tags, and remove fonts - //var pattern = new RegExp("
[ \r\n\s]*
", "gi"); - //document.body.innerHTML = document.body.innerHTML.replace(pattern, "

").replace(/<\/?font[^>]*>/gi, ""); - document.body.innerHTML = document.body.innerHTML.replace(/\s*/gi, "

").replace(/<\/?font[^>]*>/gi, ""); - - /* - - // was part of the PRE based content parsing but tweaking below - // could resolve the bad regex above replacing double br tags - // with an empty paragraph - - var html = document.body.innerHTML; - var firstTime = true; - - while (html.indexOf('\n\n') >= 0) - { - if (firstTime) - { - html = html.replace('\n\n', '

'); // first item - firstTime = false; - } - - if (html.indexOf('\n\n') == html.lastIndexOf('\n\n')) - html = html.replace('\n\n', '

'); // last item - else - html = html.replace('\n\n', '

'); // every item in between - } - - document.body.innerHTML = html; - */ + // replace all doubled-up
tags with

tags, and remove inline fonts + document.body.innerHTML = document.body.innerHTML.replace(/]*>\s*]*>/gi, "

").replace(/<\/?font[^>]*>/gi, ""); var articleContent = document.createElement("DIV"); var paragraphs = document.getElementsByTagName("P"); @@ -615,7 +598,8 @@ function normalize(text) */ function removeBreaks(element) { - element.innerHTML = element.innerHTML.replace(/(]*\/?>(\s| ?)*){1,}/gi, "
"); + // FIXME: the regex doesn't seem to pick up consecutive br tags, need to revisit + element.innerHTML = element.innerHTML.replace(/((]*>)[\s]*(]*>)){1,}/gi, "
"); } /** @@ -681,15 +665,16 @@ function removeStyles() { var style = styleTags[j]; - // TODO: need to verify that clearing out innerText works in IE - // might want to consider removing from parent if (style.textContent) { style.textContent = ""; } else { - style.innerText = ""; + // most browsers support textContent but IE has its own way but it + // seems that Firefox supports both, check link for last example + // http://www.phpied.com/the-star-hack-in-ie8-and-dynamic-stylesheets/ + style.styleSheet.cssText = ""; } } } @@ -701,12 +686,16 @@ function removeStylesheets() { // TODO: need to do more research, not sure if disabling is enough // for cross browser compatibility, might consider removal via parent - // just as done in the removeScripts method + // just as done in the removeScripts method, but will need to retrieve + // all LINK tags and make sure rel attr is "stylesheet" or that its + // type attr is "text/css" for (var k = 0; k < document.styleSheets.length; k++) { - if (document.styleSheets[k].href != null && document.styleSheets[k].href.lastIndexOf("readability") == -1) + var styleSheet = document.styleSheets[k]; + + if (styleSheet.href != null && styleSheet.href.lastIndexOf("readability") == -1) { - document.styleSheets[k].disabled = true; + styleSheet.disabled = true; } } } -- cgit v1.2.3