mirror of
				https://git.tt-rss.org/fox/tt-rss.git
				synced 2025-11-04 05:41:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
//  -*-coding: latin-1;-*-
 | 
						|
// Time-stamp: "2006-05-17 22:06:46 ADT" sburke@cpan.org
 | 
						|
 | 
						|
// A workaround for XSL-to-XHTML systems that don't
 | 
						|
//  implement XSL 'disable-output-escaping="yes"'.
 | 
						|
//
 | 
						|
// sburke@cpan.org, Sean M. Burke.
 | 
						|
//  - I hereby release this JavaScript code into the public domain.
 | 
						|
 | 
						|
var is_decoding;
 | 
						|
var DEBUG = 0;
 | 
						|
 | 
						|
function complaining (s) { alert(s);  return new Error(s,s); }
 | 
						|
 | 
						|
if(!(   document.getElementById && document.getElementsByName ))
 | 
						|
 throw complaining("Your browser is too old to render this page properly."
 | 
						|
  + "  Consider going to getfirefox.com to upgrade.");
 | 
						|
 | 
						|
function check_decoding () {
 | 
						|
  var d = document.getElementById('cometestme');
 | 
						|
  if(!d) {
 | 
						|
    throw complaining("Can't find an id='cometestme' element?");
 | 
						|
  } else if(!('textContent' in d)) {
 | 
						|
    // It's a browser with a halfassed DOM implementation (like IE6)
 | 
						|
    // that doesn't implement textContent!  Assume that if it's that
 | 
						|
    // dumb, it probably doesn't implement disable-content-encoding.
 | 
						|
 | 
						|
  } else {
 | 
						|
    var ampy = d.textContent;
 | 
						|
    if(DEBUG > 1) { alert("Got " + ampy); }
 | 
						|
 | 
						|
    if(ampy == undefined) throw complaining("'cometestme' element has undefined text content?!");
 | 
						|
    if(ampy == ''       ) throw complaining("'cometestme' element has empty text content?!"    );
 | 
						|
 | 
						|
    if      (ampy == "\x26"	) { is_decoding =  true; }
 | 
						|
    else if (ampy == "\x26amp;" ) { is_decoding = false; }
 | 
						|
    else		     { throw complaining('Insane value: "' + ampy + '"!'); }
 | 
						|
  }
 | 
						|
 | 
						|
  var msg =
 | 
						|
   (is_decoding == undefined) ? "I can't tell whether the XSL processor supports disable-content-encoding!D"
 | 
						|
   : is_decoding ? "The XSL processor DOES support disable-content-encoding"
 | 
						|
   : "The XSL processor does NOT support disable-content-encoding"
 | 
						|
  ;
 | 
						|
  if(DEBUG) alert(msg);
 | 
						|
  return msg;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function go_decoding () {
 | 
						|
  check_decoding();
 | 
						|
 | 
						|
  if(is_decoding) {
 | 
						|
    DEBUG && alert("No work needs doing -- already decoded!");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  var to_decode = document.getElementsByName('decodeme');
 | 
						|
  if(!( to_decode && to_decode.length )) {
 | 
						|
    DEBUG && alert("No work needs doing -- no elements to decode!");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  if(!(  ( "innerHTML"   in to_decode[0]) &&  ( "textContent" in to_decode[0])  ))
 | 
						|
    throw complaining( "Your JavaScript version doesn't implement DOM " +
 | 
						|
     "properly enough to show this page correctly.  " +
 | 
						|
     "Consider going to getfirefox.com to upgrade.");
 | 
						|
 | 
						|
  var s;
 | 
						|
  for(var i = to_decode.length - 1; i >= 0; i--) { 
 | 
						|
    s = to_decode[i].textContent;
 | 
						|
 | 
						|
    if(
 | 
						|
      s == undefined ||
 | 
						|
      (s.indexOf('&') == -1 && s.indexOf('<') == -1)
 | 
						|
    ) {
 | 
						|
      // the null or markupless element needs no reworking
 | 
						|
    } else {
 | 
						|
      to_decode[i].innerHTML = s;  // that's the magic
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return;
 | 
						|
}
 | 
						|
 | 
						|
//End
 |