Neat hack to restore Forward and Find in Page to IE9 Mobile

Bookmarklets are very useful on the desktop, and it turns out they work equally well in IE9 Mobile.

Gooddaytodie on XDA-Dev has crafted these JavaScript bookmarklets to restore Forward and Find in Page functions removed with the upgrade to Mango.

To add the Forward function:

Forward

  1. Go to Internet Explorer 9 Mobile, tap the “…” to bring up the menu, and tap “add to favorites” (it doesn’t matter which website you do it on)
  2. Change the “Name” field to “Forward” (or to make it stay at the top of the list, use “! Forward”)
  3. Change the “Web address” field to the following code:
    javascript:history.forward()

The code for adding find in Page is a bit more complicated, but the procedure is the same.

Find On Page

  1. Go to Internet Explorer 9 Mobile, tap the “…” to bring up the menu, and tap “add to favorites” (it doesn’t matter which website you do it on)
  2. Change the “Name” field to “Find on page” (or to make it stay at the top of the list, use “! Find on page”)
  3. Change the “Web address” field to the following code (use Copy and Paste on your phone!):
    javascript:(function(){function G(){var pf=doc.getElementById('pf');var qt=doc.getElementById('qt');if(null==pf){pf=doc.createElement('div');pf.id='pf';var s=pf.style;s.position='absolute';s.zIndex='99';s.top=(scT||scBT)+'px';s.left=(scL||scBL)+'px';s.width='100%';s.backgroundColor='#FFFF00';pf.appendChild(doc.createTextNode('Search: '));qt=doc.createElement('input');qt.id='qt';qt.type='text';pf.appendChild(qt);var sb=doc.createElement('input');sb.type='button';sb.value='Find';sb.onclick=function(){P(qt.value)};pf.appendChild(sb);doc.body.appendChild(pf);}else{pf.style.display='inline';count=0;}}function P(s){document.getElementById('pf').style.display='none';if(s==='')return;var n=srchNode(document.body,s.toUpperCase(),s.length);alert("Found "+count+" occurrence"+(count==1?"":"s")+" of '"+s+"'.");pf.parentNode.removeChild(pf);return n;}function srchNode(node,te,len){var pos,skip,spannode,middlebit,endbit,middleclone;skip=0;if(node.nodeType==3){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="red";middlebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else{if(node.nodeType==1&&node.childNodes&&node.tagName.toUpperCase()!="SCRIPT"&&node.tagName.toUpperCase!="STYLE"){for(var child=0;child<node.childNodes.length;++child){child=child+srchNode(node.childNodes[child],te,len);}}}return skip;}var count=0,scL=0,scT=0,scBL=0,scBT=0;var w=window,doc=document;if(typeof doc.body!='undefined'&&typeof doc.body.scrollLeft!='undefined'){scBL=doc.body.scrollLeft;scBT=doc.body.scrollTop;}if(typeof doc.documentElement!='undefined'&&typeof doc.documentElement.scrollLeft!='undefined'){scL=doc.documentElement.scrollLeft;scT=doc.documentElement.scrollTop;}G();})()

Thanks to LiveSide.net for creating the simple to use instructions.  Video demo by 1800pocketpc.com

Comments