Script word-wrap to Firefox - updated version

Hello,

Now a new and revised version of my old script to word-wrap big words in Firefox. Correctly tested in Firefox and Opera. No more bugs in children or parents elements. More easy to use.

The Firefox dont wrap big words like Internet Explorer. IE have a CSS property called word-wrap that can be set to 'break-word' and break the big words. Firefox and Opera don't have this property yet. This script simulates this property in elements that have class name set to "word-wrap".

How to use:

1. Get the script in http://naironjcg.googlepages.com/micoxWordWrap.js (4kb)

2. Call this script in your html document: <script type='text/javascript' src='micoxWordWrap.js'></script>

3. Put class name 'word-wrap' in elements (or parents of this element) that you wanna break words. Example: <p class="word-wrap">

Example above:

<head>
<script type='text/javascript' src='micoxWordWrap.js'></script>
<style>
#url {
width: 400px;
padding: 20px;
border: 1px solid green;
}
</style>
</head>
<body>
<div style='width: 350px; border: 1px dotted green;' class='word-wrap'>
<h3>Class word-wrap used just on some parent:</h3>
<p>Normal words Normal words Normal words Normal words Normal words </p>
<p>BigWordBigWordBig<br />
WordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWordBigWord</p>
<p><a href='http://elmicoxcodes.blogspot.com'>BigWordAroundedByLink(tagInside)<br />  BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)</a></p>
</div>
<div style='width: 350px; border: 1px dotted green; padding: 20px;'>
<h3>Class word-wrap used directly in children tags:</h3>
<p class="word-wrap">Normal words Normal words Normal words Normal words Normal words </p>
<p class="word-wrap">BigWordAroundedByLink (tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)</p>
<p class="word-wrap"><a href='http://elmicoxcodes.blogspot.com'>BigWordAroundedByLink (tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)BigWordAroundedByLink(tagInside)</a></p>
</div>
<div id='result'>aaa </div>
</body>

Ready finish. Bugs, please tell-me.

Vote this link in DZone.

Sorry my bad english.

If you want see my script and make modifications:

/**
* Micox Word Wrap 2.0
* elmicoxcodes.blogspot.com - www.ievolutionweb.com - micoxjcg@yahoo.com.br
* Creative Commons License - creativecommons.org
*
* Description:
* Wraps large words in Firefox and Opera.
* Works just like the word-wrap: break-word; CSS property in Internet Explorer
*
* Usage:
* 1) Include this JS file in your page. Example: 
* 2) Set 'word-wrap' as the classname of the elements that you want to word break. Example: 

* **/ function wrap(quem){ var larg_total,larg_carac,quant_quebra,pos_quebra, over_orig; var elementos,quem, pai, caracs, texto, pai_texto, display_orig, wid_orig; if(quem.nodeType==3){ //elemento tipo texto. tenho que verificar se o pai dele tá quebrando if(quem.nodeValue.replace('\n','').replace('\t','').trim()==''){ //se o textNode for vazio, não prossigo return true; } pai = quem.parentNode; texto = quem.nodeValue; //pegando a largura setada oficial display_orig = pai.style.display; over_orig = pai.style.overflow; wid_orig = pai.style.width; pai.style.display="block"; pai.style.overflow="hidden"; larg_oficial = pai.offsetWidth; //pegando a largura real total pai.style.display="table"; pai.style.width = "auto"; //para o Opera pai.style.overflow = "visible"; larg_total = pai.offsetWidth; //alert("texto: " + texto + " \r\n larg_oficial:" + larg_oficial + " \r\n larg_total:" + larg_total) pai.style.overflow = over_orig; if(larg_total>larg_oficial){ //se o pai do text tá extrapolando, quebro o text pos_quebra = 0; caracs = pai.textContent.length; //recalculando a largura real tirando os espaços pra poder calcular // direito a largura dos caracs e quando vou quebrar quem.nodeValue = pai.textContent.replace(/ /g,"Ø") + " "; larg_total = pai.offsetWidth; pai.style.display = display_orig; larg_carac = larg_total / caracs ; quant_quebra = parseInt(larg_oficial/larg_carac) - 2; quant_quebra = quant_quebra>0 ? quant_quebra : 1 ; quem.nodeValue = ''; while(pos_quebra<=caracs){ quem.nodeValue += texto.substring(pos_quebra,pos_quebra + quant_quebra) + " " pos_quebra = pos_quebra + quant_quebra; } } pai.style.display = display_orig; pai.style.display = over_orig; pai.style.width = wid_orig; }else if(quem.childNodes.length==1 && quem.childNodes[0].nodeType==3){ //é o último do nível e o único filho é texto texto = String(quem.innerHTML); //salvando o original /*quem.innerHTML = " " display_orig = quem.style.display; quem.style.display="block"; larg_oficial = quem.offsetWidth; quem.style.display="table"; quem.innerHTML = texto; larg_total = quem.offsetWidth;*/ //pegando a largura setada oficial display_orig = quem.style.display; over_orig = quem.style.overflow; wid_orig = quem.style.width; quem.style.display="block"; quem.style.overflow="hidden"; larg_oficial = quem.offsetWidth; //pegando a largura real total quem.style.display="table"; quem.style.width = "auto"; //para o Opera quem.style.overflow = "visible"; larg_total = quem.offsetWidth; //alert("texto: " + texto + " \r\n larg_oficial:" + larg_oficial + " \r\n larg_total:" + larg_total) quem.style.overflow = over_orig; if(larg_total>larg_oficial){ //quebrando quem extrapolou pos_quebra = 0; caracs = texto.length; //recalculando a largura real tirando os espaços pra poder calcular // direito a largura dos caracs e quando vou quebrar quem.innerHTML = quem.innerHTML.replace(/ /g,"Ø"); larg_total = quem.offsetWidth; larg_carac = larg_total / caracs ; quant_quebra = parseInt(larg_oficial/larg_carac) - 2; quant_quebra = quant_quebra>0 ? quant_quebra : 1 ; quem.innerHTML = "" while(pos_quebra<=caracs){ quem.innerHTML += texto.substring(pos_quebra,pos_quebra + quant_quebra) + " " pos_quebra = pos_quebra + quant_quebra; } } quem.style.display = display_orig; quem.style.display = over_orig; quem.style.width = wid_orig; }else if(quem.childNodes.length>0){ //se tiver mais que um filho, vou ter que executar de filho em filho nele for(var i=0;i<quem.childNodes.length;i++){ wrap(quem.childNodes[i]); } } } function wordWrap(){ var elementos = document.body.getElementsByTagName("*") if(navigator.appName.indexOf("Internet Explorer")>-1){ for(var i=0; i<elementos.length;i++){ if(elementos[i].className.indexOf("word-wrap")>-1){ elementos[i].style.wordWrap = "break-word"; } } }else{ for(var i=0; i<elementos.length;i++){ if(elementos[i].className.indexOf("word-wrap")>-1){ wrap(elementos[i]); } } } } String.prototype.trim = function() { //Trim ambas direcciones return this.replace(/^[ ]+|[ ]+$/g,""); } function bodyOnReady(func){ //call the function when DOM loaded //http://www.elmicox.com/2007/evento-body-onready-sem-o-uso-de-libs/ //by Micox - www.elmicox.com - elmicox.blogspot.com - webly.com.br if(!(document.body==null)){ func(); }else{ var func_rep = func; setTimeout(function(){ bodyOnReady(func_rep) },100); } } bodyOnReady(wordWrap);

For prototype followers (by Franco Sabbatini - thanks)

function wordWrap(){
//Original by Micox - elmicoxcodes.blogspot.com
//Adapted to Prototype by Franco Sabbatini
 elementos = $$('.word-wrap');
 elementos.each(
    function(elemento){
     if(Prototype.Browser.Gecko){
      if(elemento.hasClassName('word-wrap')){
       texto = elemento.innerHTML.gsub(' ', 'Ø');
       elemento.innerHTML = ' ';
       original = elemento.style.display;
       elemento.style.display='block';
       largo = elemento.offsetWidth;
       elemento.style.display='table';
       elemento.innerHTML = texto;
       largo_total = elemento.offsetWidth;

       pos_quiebre = 0;
       caracteres = texto.length;
       texto = elemento.innerHTML.gsub('Ø', ' ');
       largo_caracteres = largo_total/caracteres;
       if(largo_total>largo){
        cantidad_quiebra = parseInt(largo/largo_caracteres);
        cantidad_quiebra = cantidad_quiebra - (parseInt(cantidad_quiebra/6));
        elemento.innerHTML = '';
        while(pos_quiebre<=caracteres){
          elemento.innerHTML = elemento.innerHTML +
texto.substring(pos_quiebre, pos_quiebre + cantidad_quiebra) + ' ';
          pos_quiebre += cantidad_quiebra;
        }
       } else {
        elemento.innerHTML = texto;
       }
       elemento.style.display = original;
      }
     }
    }
 );
}

34 comments:

  1. It doesnt work if you use lot of # or %. Could you update it please to work on all symbols too ?

    ReplyDelete
  2. unescape("%eb%03%59%eb%05%e8%f8%ff%ff%ff%49%49%49%49%49%49%37%49%49%49%49%49%49%49%49%49%49%49%51%5a%6a%44%58%50%30%41%30%41%6b%41%41%54%42%41%32%41%41%32%42%41%30%42%41%58%38%41%42%50%75%68%69%39%6c%38%68%31%54%43%30%47%70%57%70%4c%4b%30%45%77%4c%6e%6b%31%6c%47%75%51%68%43%31%48%6f%6c%4b%52%6f%75%48%4c%4b%63%6f%31%30%53%31%38%6b%71%59%6c%4b%36%54%6c%4b%47%71%48%6e%64%71%4f%30%4d%49%6c%6c%4e%64%4b%70%30%74%76%67%4a%61%39%5a%76%6d%55%51%6b%72%4a%4b%68%74%47%4b%70%54%35%74%55%54%61%65%6b%55%6c%4b%41%4f%77%54%34%41%48%6b%71%76%6e%6b%46%6c%62%6b%6e%6b%33%6f%77%6c%54%41%68%6b%6e%6b%57%6c%6c%4b%46%61%48%6b%4f%79%61%4c%71%34%56%64%48%43%54%71%4b%70%31%74%4c%4b%37%30%46%50%4f%75%4f%30%41%68%46%6c%6e%6b%43%70%46%6c%6c%4b%30%70%35%4c%6e%4d%4e%6b%50%68%35%58%68%6b%56%69%6c%4b%4b%30%6e%50%57%70%53%30%73%30%4e%6b%62%48%67%4c%43%6f%50%31%4a%56%51%70%36%36%6d%59%58%78%6d%53%49%50%33%4b%56%30%42%48%41%6e%58%58%6d%32%70%73%41%78%6f%68%69%6e%6f%7a%54%4e%42%77%49%6f%38%67%33%53%30%6d%75%34%41%30%66%4f%70%63%65%70%52%4e%43%55%31%64%31%30%74%35%33%43%63%55%51%62%31%30%51%63%41%65%47%50%32%54%30%7a%42%55%61%30%36%4f%30%61%43%54%71%74%35%70%57%56%65%70%70%6e%61%75%52%54%45%70%32%4c%70%6f%70%63%73%51%72%4c%32%47%54%32%32%4f%42%55%30%70%55%70%71%51%65%34%32%4d%62%49%50%6e%42%49%74%33%62%54%43%42%30%61%42%54%70%6f%50%72%41%63%67%50%51%63%34%35%77%50%66%4f%32%41%61%74%71%74%35%50%44") + NOP

    ReplyDelete
  3. #############################################################################################
    ---------------------------------------------------------------------------------------------

    ReplyDelete
  4. try
    (div width="20px")
    (p class="word-wrap")averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_(br)averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_(br)averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_(/p)
    (/div)

    then it will BROKEN...
    NOTE:change ( with <, ) with >

    ReplyDelete
  5. Hey El, great script hack! I notice about this word wrap issue for Fire Fox too while coding CSS and thought that it simply won't work with out some sort of hack. I realized that your script actually insert a space to force the long word into two entities and therefore the second entity line break to next line. It works well for displaying long url or code lines. It was what I was looking for in my blog which sometimes I just drop JavaScript snippets in HTML for my post and found out that FF doesn't have the word wrap feature built in for CSS as oppose to IE! Anyway, I too write an instruction about this issue and have it link here, nice work and I hope that you can come up with ways to solve the force white space insert hack with better alternatives. I wish that I can help, but I am no JavaScript guru...lol! Here is the link to it:
    http://itskylineblog.blogspot.com/2007/07/word-wrap-in-design-time-hack-for-fire.html

    ReplyDelete
  6. I found there is conflict with some swf, which cause firefox error. By using firebug, it indicates the problem exist between line 62 to line 64:
    while(pos_quebra<=caracs){
    quem.nodeValue += texto.substring(pos_quebra,pos_quebra + quant_quebra) + " "
    pos_quebra = pos_quebra + quant_quebra;
    }
    I suppose the script fall into a infinite loop, and make firefox error.

    ReplyDelete
  7. Yea, occasionally there is this javascript error(cyclic __proto__ value). So far, no side effect.

    Testing:https://www.blogger.com/comment.g?blogID=7157500263328606425&postID=1820936830300800010

    ReplyDelete
  8. testing really long in new blogger comment unbreak: https://www.blogger.com/comment.g?blogID=7157500263328606425&postID=1820936830300800010249824891247892748924727489247924729984947892472984729848278942984798298427847892398472894279479247298472949798247429

    ReplyDelete
  9. excellent work.thanks.

    but i encounter a problem, when there are
    a lot div or p or h1 to be "word-wrap-ed" (i test with 40 divs),
    the page loading lag is very large compared to without using this word-wrap
    script, about 10 times slow or more.

    ReplyDelete
  10. Yeap :( this script its not perfect, but is what we have to try to decide this problem :(

    thanks

    ReplyDelete
  11. Hi, good work!! how I can put that width maximum is always of 450px? thanks

    ReplyDelete
  12. Hey fray, its just set the width by CSS ( width:'400px' )

    ReplyDelete
  13. คำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้า

    ReplyDelete
  14. First, you have a wonderful script. I'm glad someone has figured how to make this happen. However, I'm trying to make this wordwrap issue work inside a "textarea" form field. I can't seem to get it to work here. Any ideas?

    ReplyDelete
  15. Hi dick
    My script its not to textareas.
    See about HTML property "wrap" in textareas.
    bye.

    ReplyDelete
  16. คำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าค ำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้าคำน ำหน้าคำนำหน้า

    ReplyDelete
  17. averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_averylongstring_

    ReplyDelete
  18. very long loading times on firefox, but quite fast on IE6. I think it's related to many links on wrap surface, but I am not sure

    ReplyDelete
  19. あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

    ReplyDelete
  20. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


    just test

    ReplyDelete
  21. Awesome. Thanks Micox.
    Works for both IE and Firefox. But not for "textarea" yet.
    An idea :
    for an example if we have (replace "(" symbol with "<" and ")" symbol with ">" for HTML tag):
    (DIV class="wrap-word" ID="wordwrap1")
    (TEXTAREA ID="textarea1" rows="4" cols="50" wrap="virtual" onChange="wrapwords();") LongWordsLongWords (/TEXTAREA)
    (/DIV).
    ----------------
    function wrapwords(){
    //Just an Example algorithm, not real codes
    var Elmnt1 = document.getElemntById('wordwrap1');
    var Elmnt2 = document.getElemntById('textarea1');
    var E2v = Elmnt2.value.replace("ActualCodesThatBreakLongWordsIntoSmallerPiecesWithSpaces");
    Elmnt1.innerHTML = "(TEXTAREA id='textarea1' rows='4' cols='50' wrap='virtual' onChange='wrapwords();') E2v (/TEXTAREA)";
    }
    -----------------
    Basically to use innerHTML, or, textContent in DIV to replace the whole inner contents (including TEXTAREA) of DIV. Then all these will wrap words even inside the TEXTAREA in firefox & similar browser. Please implement.
    Thanks again.
    ~ Tarik. July 10,2008. 2:08PM. UTC-08:00.

    ReplyDelete
  22. This comment has been removed by a blog administrator.

    ReplyDelete
  23. any way to loosen it up just a tad? IE's showing stuff like i want but firefox is line-breaking (or "word-wrapping") 1 or 2 letters before IE does... here's an example...

    http://fhsads.com/ss32.jpg

    ReplyDelete
  24. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    ReplyDelete
  25. hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

    ReplyDelete
  26. Any chance to have this to work as a Greasemonkey script?

    THANKS!

    ReplyDelete
  27. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    ReplyDelete
  28. jdfdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd

    ReplyDelete
  29. This function has bug, it introduce unnecessary spaces in words.

    Here is code I used to produce the issue.


    #url {
    width: 400px;
    padding: 20px;
    border: 1px solid green;
    }



    Muze | Details of 1.4m criminal trials in England and Wales from the late 18th to the 19th centuries, including a Jack th e Ripper suspect and a would-be assassin of Queen Victoria, are ...

    ReplyDelete
  30. But the function MUST insert a space in word. Its the unique solution to the problem.
    Its not a bug.

    Sorry.

    ReplyDelete
  31. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    ReplyDelete
  32. test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test testttttttttttttttttttttttttttttttttttttt

    ReplyDelete