diff options
Diffstat (limited to 'js')
-rwxr-xr-x | js/readability-start.js | 21 | ||||
-rwxr-xr-x | js/readability.js | 65 |
2 files changed, 35 insertions, 51 deletions
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 <BR> tags with <P> tags, and remove fonts
- //var pattern = new RegExp("<br/?>[ \r\n\s]*<br/?>", "gi");
- //document.body.innerHTML = document.body.innerHTML.replace(pattern, "</p><p>").replace(/<\/?font[^>]*>/gi, "");
- document.body.innerHTML = document.body.innerHTML.replace(/<br\/?>\s*<br\/?>/gi, "<p />").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', '<p>'); // first item
- firstTime = false;
- }
-
- if (html.indexOf('\n\n') == html.lastIndexOf('\n\n'))
- html = html.replace('\n\n', '</p>'); // last item
- else
- html = html.replace('\n\n', '</p><p>'); // every item in between
- }
-
- document.body.innerHTML = html;
- */
+ // replace all doubled-up <BR> tags with <P> tags, and remove inline fonts
+ document.body.innerHTML = document.body.innerHTML.replace(/<br[^>]*>\s*<br[^>]*>/gi, "<p />").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(/(<br[^>]*\/?>(\s| ?)*){1,}/gi, "<br />");
+ // FIXME: the regex doesn't seem to pick up consecutive br tags, need to revisit
+ element.innerHTML = element.innerHTML.replace(/((<br[^>]*>)[\s]*(<br[^>]*>)){1,}/gi, "<br />");
}
/**
@@ -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;
}
}
}
|