{"id":69775,"date":"2025-09-14T03:01:00","date_gmt":"2025-09-13T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=69775"},"modified":"2025-09-13T19:07:33","modified_gmt":"2025-09-13T09:07:33","slug":"wordpress-blog-comments-url-right-click-popup-check-prevent-default-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-comments-url-right-click-popup-check-prevent-default-tutorial\/","title":{"rendered":"WordPress Blog Comments URL Right Click Popup Check Prevent Default Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress_comment_moderation_url_checker_better.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Blog Comments URL Right Click Popup Check Prevent Default Tutorial\" src=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress_comment_moderation_url_checker_better.gif\" title=\"WordPress Blog Comments URL Right Click Popup Check Prevent Default Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Blog Comments URL Right Click Popup Check Prevent Default Tutorial<\/p><\/div>\n<p>We&#8217;re coming back to the previous <a target=\"_blank\" title='WordPress.org ... your hosting' href='http:\/\/www.wordpress.org' rel=\"noopener\">WordPress<\/a> administrator Comment moderation section URL Popup Window Checker functionality last talked about with <a title='WordPress Blog Comments URL Right Click Popup Check Tutorial' href='#wpbcurlrcpct'>WordPress Blog Comments URL Right Click Popup Check Tutorial<\/a>.<\/p>\n<p>We were finding before <font color=blue>this Javascript code fix<\/font> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n\tsetTimeout(function(){<br \/>\n\t  if (document.body.innerHTML.indexOf('Comments&lt;\/h1&gt;') != -1) {<br \/>\n\t     var als=document.getElementsByTagName('a');<br \/>\n\t     for (var ials=0; ials&lt;als.length; ials++) {<br \/>\n\t        if (('' + als[ials].href).indexOf('http') == 0 && ('' + als[ials].href).replace('wordpress.org','rjmprogramming.com.au').indexOf('rjmprogramming.com.au') == -1) {<br \/>\n\t          als[ials].oncontextmenu=function(evt){  <font color=blue>evt.stopPropagation();  evt.preventDefault(); if (woowoo) { if (!woowoo.closed) { !woowoo.close(); woowoo=null;  }  }  woowoo=<\/font>window.open(evt.target.href, '_blank', 'left=' + eval(-480 + eval('' + screen.width)) + ',top=0,width=500,height=200'); setTimeout(function(){ woowoo.focus(); }, 500);  };<br \/>\n\t          als[ials].ontouchend=function(evt){  evt.stopPropagation();  evt.preventDefault(); if (woowoo) { if (!woowoo.closed) { !woowoo.close(); woowoo=null;  }  }  woowoo=window.open(evt.target.href, '_blank', 'left=' + eval(-480 + eval('' + screen.width)) + ',top=0,width=500,height=200'); setTimeout(function(){ woowoo.focus(); }, 500);  };<br \/>\n\t        }<br \/>\n\t     }<br \/>\n\t  }<br \/>\n\t}, 6000);<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; in admin-header.php that popup windows were being created but immediately falling behind the main WordPress blog &#8220;admin&#8221; section Comments section webpage window, annoyingly.  Our investigations tracked it down to the right click &#8220;default behaviour&#8221; forcing the popup window out of view.<\/p>\n<p>The remedy being?  <a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA' rel=\"noopener\">Anyone, anyone<\/a>? <br \/>.<br \/>.<br \/>.<br \/>.<br \/>No takers &#8230; how about a hint? &#8230; It starts with <br \/>.<br \/>.<br \/>.<br \/>.<br \/>p<br \/>.<br \/>.<br \/>.<br \/> &#8230; no takers &#8230; then with <br \/>.<br \/>.<br \/>.<br \/>.<br \/>r<br \/>.<br \/>.<br \/>.<br \/> &#8230; no takers  &#8230; then with <br \/>.<br \/>.<br \/>.<br \/>.<br \/>e<br \/>.<br \/>.<br \/>.<br \/> &#8230; no takers &#8230; then with <br \/>.<br \/>.<br \/>.<br \/>.<br \/>v<br \/>.<br \/>.<br \/>.<br \/> &#8230; no takers &#8230; then with <br \/>.<br \/>.<br \/>.<br \/>.<br \/>e<br \/>.<br \/>.<br \/>.<br \/>.<br \/> &#8230; finally, yes <a target=\"_blank\" title=\"?\" href='https:\/\/en.wikipedia.org\/wiki\/Nicola_Salvi' rel=\"noopener\">Nicola<\/a> &#8230; are you saying &#8220;Preve Fountain&#8221; &#8230; <br \/>.<br \/>.<br \/>.<br \/>Alas, no &#8230; and it&#8217;s not Spanish Steps or Pantheon or Colosseum or Trevi Fountain or Piazza Venezia or Saint Peter&#8217;s Square either, if that helps &#8230; <a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA' rel=\"noopener\">Anyone else<\/a>? <br \/>.<br \/>.<br \/>.<br \/>.<br \/> &#8230; yes, <a target=\"_blank\" title=\"?\" href='https:\/\/en.wikipedia.org\/wiki\/Audrey_Hepburn' rel=\"noopener\">Audrey<\/a>? <br \/>.<\/p>\n<p>.<br \/> &#8230; you&#8217;re saying <a target=\"_blank\" title=\"?\" href='https:\/\/en.wikipedia.org\/wiki\/Bocca_della_Verit%C3%A0' rel=\"noopener\">&#8220;The Mouth of Truth&#8221;<\/a>?<br \/>.<\/p>\n<p>.<br \/> &#8230; no, sorry, no doubt it was on the tip of your collective tongues, when we say it&#8217;s &#8230;<\/p>\n<p><code><br \/>\nevent.<a target=\"_blank\" title='event.preventDefault information from W3schools' href='https:\/\/www.w3schools.com\/jsref\/event_preventdefault.asp' rel=\"noopener\"><font color=red>preve<\/font>ntDefault<\/a>();<br \/>\n<\/code><\/p>\n<blockquote><p>\nAaaahhhh\n<\/p><\/blockquote>\n<p> &#8230; thank you, <a target=\"_blank\" title=\"?\" href='https:\/\/en.wikipedia.org\/wiki\/Sage_Francis' rel=\"noopener\">Sage<\/a> &#8230; preventing that right click menu from appearing, and so not compromising window focus web browser rendering.  We do very little WordPress administration on mobile, but just in case, we added an ontouchend event (usually happening at the finish of a gesture) mimicking of the non-mobile right click logic, for good measure.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-comments-url-right-click-popup-check-prevent-default-tutorial\/' rel=\"noopener\">WordPress Blog Comments URL Right Click Popup Check Prevent Default Tutorial<\/a>.<\/p-->\n<hr>\n<p id='wpbcurlrcpct'>Previous relevant <a target=\"_blank\" title='WordPress Blog Comments URL Right Click Popup Check Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-comments-url-right-click-popup-check-tutorial\/' rel=\"noopener\">WordPress Blog Comments URL Right Click Popup Check Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress_comment_moderation_url_checker.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Blog Comments URL Right Click Popup Check Tutorial\" src=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress_comment_moderation_url_checker.gif\" title=\"WordPress Blog Comments URL Right Click Popup Check Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Blog Comments URL Right Click Popup Check Tutorial<\/p><\/div>\n<p>In the past we have only mildly changed the administration section of our TwentyTen themed WordPress<sub>.org<\/sub> blog <font size=1>(you are currently reading)<\/font> here at RJM Programming, and some of that involved new WordPress plugins, as you can read a bit about with <a title='WordPress Blog Data URI in Post Plugin Tutorial' href='#wpbdurippt'>WordPress Blog Data URI in Post Plugin Tutorial<\/a>.<\/p>\n<p>We maintain that blog within an &#8220;admin&#8221; part of the WordPress blog, and any changes we&#8217;d put in a &#8220;des<a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=P2b0IWENUts' rel=\"noopener\"><strike>s<\/strike><\/a>ert island wish list&#8221; usually just absorb and move on, but we thought we&#8217;d improve on &#8230;<\/p>\n<p><code><br \/>\nWordPress comment moderation<br \/>\n<\/code><\/p>\n<p> &#8230; by allowing myself <font size=1>(well, thanks awfully, I don&#8217;t really know what to say)<\/font> the chance to &#8230;<\/p>\n<ul>\n<li>on any comments webpage &#8230;<\/li>\n<li>right click on &#8220;a&#8221; links whose domain is neither <i>wordpress.org<\/i> nor <i>rjmprogramming.com.au<\/i> and &#8230; in so doing &#8230;<\/li>\n<li>be able to see a small popup window to the top right of the screen<\/li>\n<\/ul>\n<p> &#8230; because, even if we wanted to argue with the great <a target=\"_blank\" title='Akismet anti-spam' href='https:\/\/akismet.com\/' rel=\"noopener\">Akismet <sub><font size=1>(we use and are very happy with around here)<\/font><\/sub><\/a> calling it spam, one of the steps we&#8217;d want to investigate would be to rule out a potential &#8220;broken link&#8221;, and this is a way to check for that.<\/p>\n<p>Now, what we discovered marrying &#8220;a wish&#8221; with &#8220;an action plan&#8221; was that &#8230;<\/p>\n<ul>\n<li>in parallel to the TwentyTen <i>non-admin<\/i> parts being manageable largely via changes to good <i>ol&#8217;<\/i> header.php &#8230; we found &#8230;<\/li>\n<li>the easy approach to changes in the <i>admin<\/i> parts could be achieved by changes to good <i>new<\/i> admin-header.php<\/li>\n<\/ul>\n<p> &#8230; with our action plan moving to &#8220;deployment&#8221; <font color=blue>via<\/font> PHP (writes Javascript) admin-header.php modified code &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n&lt;script type=\"text\/javascript\"&gt;<br \/>\n\tdocument.body.className = document.body.className.replace('no-js','js');<br \/>\n\t<br \/>\n\t<font color=blue>setTimeout(function(){<br \/>\n\t  if (document.body.innerHTML.indexOf('Comments&lt;\/h1&gt;') != -1) {<br \/>\n\t     var als=document.getElementsByTagName('a');<br \/>\n\t     for (var ials=0; ials&lt;als.length; ials++) {<br \/>\n\t        if (('' + als[ials].href).indexOf('http') == 0 && ('' + als[ials].href).replace('wordpress.org','rjmprogramming.com.au').indexOf('rjmprogramming.com.au') == -1) {<br \/>\n\t          als[ials].oncontextmenu=function(evt){  window.open(evt.target.href, '_blank', 'left=' + eval(-500 + eval('' + screen.width)) + ',top=0,width=500,height=200');  };<br \/>\n\t        }<br \/>\n\t     }<br \/>\n\t  }<br \/>\n\t}, 6000);<\/font><br \/>\n&lt;\/script&gt;<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Pretty straightforward really, and perhaps of interest to some WordPress<sub>.org<\/sub> comment moderators out there!<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-comments-url-right-click-popup-check-tutorial\/' rel=\"noopener\">WordPress Blog Comments URL Right Click Popup Check Tutorial<\/a>.<\/p-->\n<hr>\n<p id='wpbdurippt'>Previous relevant <a target=\"_blank\" title='WordPress Blog Data URI in Post Plugin Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-data-uri-in-post-plugin-tutorial\/' rel=\"noopener\">WordPress Blog Data URI in Post Plugin Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/data_uri_helper.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Blog Data URI in Post Plugin Tutorial\" src=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/data_uri_helper.gif\" title=\"WordPress Blog Data URI in Post Plugin Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Blog Data URI in Post Plugin Tutorial<\/p><\/div>\n<p>Today, we&#8217;ve got another WordPress <a target=\"_blank\" title='Plugin information from Wikipedia' href='https:\/\/en.wikipedia.org\/wiki\/Plug-in_(computing)' rel=\"noopener\">plugin<\/a> to suit the TwentyTen themed blog you are reading, adding onto those described at <a title='WordPress Blog Collaborative Annotated Email FormData Post Tutorial' href='#wpbcaefdpt'>WordPress Blog Collaborative Annotated Email FormData Post Tutorial<\/a>.<\/p>\n<p>This plugin suits the Content Editor creating the posts in the administration end of the WordPress TwentyTen themed blog, when they desire to add a <a target=\"_blank\" title='Data URI information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Data_URI_scheme' rel=\"noopener\">data URI<\/a>, rather than an absolute URL or relative URL (which would probably involve an upload).  To use data URIs will make your blog posts independent of web server file arrangements, but if you are looking for this to save (web server) diskspace, this might be a mute point.  The diskspace could still be used up by the MySql database storing the data URI in its base64 encoding.<\/p>\n<p>What does our PHP plugin call on to do its <strike>thang<\/strike>thing?<\/p>\n<ul>\n<li>plugin actions (similar to other plugins talked about in postings below) &#8230;\n<ol>\n<li>add_action( &#8216;admin_notices&#8217;, &#8216;rjmprogramming_Data_URI_Helper&#8217; );    \/\/ for Javascript adding HTML to webpage dynamically<\/li>\n<li>add_action( &#8216;admin_footer&#8217;, &#8216;rjmprogramming_data_uri_helper_css&#8217; );   \/\/ for CSS<\/li>\n<\/ol>\n<\/li>\n<li><a target=\"_blank\" title='Great link' href='http:\/\/www.html5rocks.com\/en\/tutorials\/file\/dndfiles\/' rel=\"noopener\">File API<\/a> and its <a target=\"_blank\" title='FileReader.readAsDataURL() information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/FileReader\/readAsDataURL' rel=\"noopener\">FileReader.readAsDataURL()<\/a> method to browse for local device files<\/li>\n<li>highlighted text (within the blog posting, where we rely on <i>TwentyTen &#8220;id&#8221;s and &#8220;className&#8221;s<\/i> to identify user intent) that gets substituted by the data URI if successful &#8230; when the user clicks\/touches the newly introduced &#8230;<\/li>\n<li>&#8220;Data URI Highlighted Text Replacer&#8221; <i>a<\/i> link<\/li>\n<\/ul>\n<p>And so we have for you today <a target=\"_blank\" title='rjmprogramming-data-uri-helper.php_GETME' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/rjmprogramming-data-uri-helper.php_GETME' rel=\"noopener\">rjmprogramming-data-uri-helper.php<\/a> PHP source code that goes into this plugin should you want to write your own version for a theme that isn&#8217;t the WordPress TwentyTen theme (looking for those <i>TwentyTen &#8220;id&#8221;s and &#8220;className&#8221;s<\/i> as changepoints), and\/or view us using it with today&#8217;s <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/data_uri_helper.gif\" title='Click picture' rel=\"noopener\">animated GIF<\/a> presentation.<\/p>\n<hr>\n<p id='wpbcaefdpt'>Previous relevant <a target=\"_blank\" title='WordPress Blog Collaborative Annotated Email FormData Post Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-collaborative-annotated-email-formdata-post-tutorial\/' rel=\"noopener\">WordPress Blog Collaborative Annotated Email FormData Post Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/wordpress\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Blog Collaborative Annotated Email FormData Post Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/wordpress\/wpannotatedemailpost.jpg\" title=\"WordPress Blog Collaborative Annotated Email FormData Post Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Blog Collaborative Annotated Email FormData Post Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='WordPress Blog Collaborative Annotated Email User Experience Tutorial' href='#wpbcaeuet'>WordPress Blog Collaborative Annotated Email User Experience Tutorial<\/a> helped with practicalities regarding user experience with this WordPress Blog highlighting of text accumulated into the body (as HTML attachment) and subject (as text) of an Annotated Email form of collaborative communication.<\/p>\n<p>The &#8220;subject&#8221; extension here makes it all the more important to try to look out for long email URLs that will exceed the web server limit here.  When too long, that &#8230;<\/p>\n<ul>\n<li>previous GET method of navigation &#8230; needs to be converted to a &#8230;<\/li>\n<li>POST method of navigation<\/li>\n<\/ul>\n<p> &#8230; and today we do not write out any discrete HTML form element to do this (when required), but instead resort to the wonderfully powerful combination of &#8230;<\/p>\n<ul>\n<li>Ajax <a target=\"_blank\" title='XMLHttpRequest information' href='https:\/\/developer.mozilla.org\/en\/docs\/Web\/API\/XMLHttpRequest' rel=\"noopener\">XMLHttpRequest<\/a> object &#8230; as the conduit for &#8230;<\/li>\n<li><a target=\"_blank\" title='FormData object information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/FormData' rel=\"noopener\">FormData<\/a> object<\/li>\n<\/ul>\n<p> &#8230; to be used by the new dynamic thinking Javascript function as below &#8230;<\/p>\n<p><code><br \/>\nfunction iftoolongpost(prefixu, restsub, restu) {<br \/>\n  var prefixrest=prefixu.replace('&body=', encodeURIComponent(restsub) + '&body=') + restu;<br \/>\n  if ((prefixrest).length &gt; 900) {<br \/>\n  \/\/ dynamic form<br \/>\n  var xhr = new XMLHttpRequest();<br \/>\n  var form=new FormData();<br \/>\n  form.append('to', decodeURIComponent(prefixrest.split('to=')[1].split('&')[0]));<br \/>\n  form.append('subject', decodeURIComponent(prefixrest.split('subject=')[1].split('&')[0]));<br \/>\n  form.append('body',  decodeURIComponent(prefixrest.split('body=')[1].split('&')[0]));<br \/>\n  xhr.open('post', '\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php', true);<br \/>\n  xhr.send(form);<br \/>\n  \/\/ end of dynamic form<br \/>\n  location.href='#hfloater';<br \/>\n  } else {<br \/>\n  document.getElementById('aeciframe').src=prefixrest;<br \/>\n  }<br \/>\n}<br \/>\n<\/code><\/p>\n<p> &#8230; called in that different calling arrangement as per &#8230;<\/p>\n<p><code><br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Annotated Email &lt;a class=\"hlclass\" style=\"inline-block;cursor:pointer;text-decoration:none;\" onclick=\"iftoolongpost(this.title, encodeURIComponent((this.innerText || this.contentWindow || this.contentDocument)), encodeURIComponent(this.innerHTML.substring(this.innerHTML.indexOf(String.fromCharCode(60)))));\" data-href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php?to=&subject=Re%3a%20' + encodeURIComponent(document.title.split('|')[0]) + '%20%28' + encodeURIComponent(document.URL) + '%29%0a&body=\" title=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php?to=&subject=Re%3a%20' + encodeURIComponent(document.title.split('|')[0]) + '%20%28%20' + encodeURIComponent(document.URL) + '%20%29%0a&body=\" target=aeciframe onmouseover=\"this.title=emaileeis(this.title);\" ontouchstart=\"this.title=emaileeis(this.title);\" id=b_hfloater_annotated_email&gt;' + aec + '&lt;\/a&gt;&lt;\/b&gt;&lt;iframe id=aeciframe name=aeciframe style=display:none; src=#&gt;&lt;\/iframe&gt;&lt;br&gt;';<br \/>\n<\/code><\/p>\n<p> &#8230; featuring in <a target=\"_blank\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-multi-lookup.php------GETME\" title=\"plugins\/rjmprogramming-multi-lookup.php\" rel=\"noopener\">changed PHP<\/a> <a target=\"_blank\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-multi-lookup.php------GETME\" title=\"plugins\/rjmprogramming-multi-lookup.php\" rel=\"noopener\">rjmprogramming-multi-lookup.php<\/a> plugin and\/or changed TwentyTen theme header.php file.<\/p>\n<hr>\n<p id='wpbcaeuet'>Previous relevant <a target=\"_blank\" title='WordPress Blog Collaborative Annotated Email User Experience Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-collaborative-annotated-email-user-experience-tutorial\/' rel=\"noopener\">WordPress Blog Collaborative Annotated Email User Experience Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/wordpress\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Blog Collaborative Annotated Email User Experience Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/wordpress\/wpannotatedemail.jpg\" title=\"WordPress Blog Collaborative Annotated Email User Experience Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Blog Collaborative Annotated Email User Experience Tutorial<\/p><\/div>\n<p>Did you try yesterday&#8217;s <a title='WordPress Blog Collaborative Annotated Email Tutorial' href='#wpbcaet'>WordPress Blog Collaborative Annotated Email Tutorial<\/a> highlighting of text Annotated Email functionality?   If you did, you might have found a &#8220;hair trigger&#8221; timed user experience.  You had a very small amount of time to decide on any amendments &#8220;by hand&#8221; to your email.<\/p>\n<p>On this, did you notice how we relied on a Javascript <a target=\"_blank\" title='Javascript prompt window information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_win_prompt.asp' rel=\"noopener\">prompt<\/a> window to garner an email address off the user?  There is method in this &#8220;kludginess&#8221;.  We wanted the highlighting not to be destroyed by a change of focus.  The downside though, is that the whole time you spend answering contributes to any <a target=\"_blank\" title='Javascript setTimeout method information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_win_settimeout.asp' rel=\"noopener\"><i>setTimeout<\/i><\/a> based timing we have going before we automatically make the highlighting functionality menu disappear.  Today, we control that, waiting an extra 10 seconds or so after that for the user to start entering their own Annotated Email content, should they wish, and the HTML div <a target=\"_blank\" title='Global contenteditable attribute information from W3schools' href='https:\/\/www.w3schools.com\/tags\/att_global_contenteditable.asp' rel=\"noopener\">contenteditable<\/a>=true is reminded by a new <i>onchange<\/i> replenishment of the delay that the user is still writing &#8230; a bit like with SMSes and those blinking dots telling you the other SMSer is writing something (but not as cute here, looks wise, alas).<\/p>\n<p>Again, into the WordPress (<a target=\"_blank\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-multi-lookup.php-----GETME\" title=\"plugins\/rjmprogramming-multi-lookup.php\" rel=\"noopener\">changed PHP<\/a> <a target=\"_blank\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-multi-lookup.php-----GETME\" title=\"plugins\/rjmprogramming-multi-lookup.php\" rel=\"noopener\">rjmprogramming-multi-lookup.php<\/a>) plugin or header.php the changed (<b>header.php<\/b>) code involves new Javascript (that dynamically creates HTML) as per &#8230;<\/p>\n<p><code><br \/>\nvar mpn='', eod='', aec='', withindiv=<b>0<\/b>;<br \/>\n<br \/>\nfunction emaileeis(inideais) {<br \/>\n  var presm='', postsm='';<br \/>\n  if (inideais.indexOf(':') != -1) {<br \/>\n    presm=inideais.split(':')[0] + ':';<br \/>\n    postsm=inideais.replace(presm,'');<br \/>\n  } else if (inideais.indexOf('?to=') != -1) {<br \/>\n    presm=inideais.split('?to=')[0] + '?to=';<br \/>\n    if (inideais.indexOf('&') != -1) {<br \/>\n    postsm=inideais.replace(presm,'').replace(inideais.split('?to=')[1].split('&')[0],'');<br \/>\n    }<br \/>\n  } else if (inideais.indexOf('&') != -1) {<br \/>\n    presm=inideais.split('&')[0] + '&';<br \/>\n    postsm=inideais.replace(presm,'');<br \/>\n  } else {<br \/>\n    presm=inideais.split('?')[0];<br \/>\n    postsm=inideais.replace(presm,'');<br \/>\n  }<br \/>\n  if (eod == '') {<br \/>\n    if (inideais.indexOf('?to=') != -1) {<br \/>\n      eod=inideais.split('?to=')[1].split('&')[0];<br \/>\n    }<br \/>\n    <b>var pwithindiv=withindiv;<br \/>\n    withindiv=9000;<\/b><br \/>\n    eod=prompt('Enter email address', eod);<br \/>\n    <b>if (pwithindiv == 0) {<br \/>\n    withindiv=0.9999;<br \/>\n    } else {<br \/>\n    withindiv=pwithindiv;<br \/>\n    }<\/b><br \/>\n    if (eod == null) {<br \/>\n      eod='';<br \/>\n    }<br \/>\n  }<br \/>\n  return presm + encodeURIComponent(eod) + postsm;<br \/>\n}<br \/>\n<br \/>\nfunction smsee(inideais) {<br \/>\n  var presm='', postsm='';<br \/>\n  if (inideais.indexOf(':') != -1) {<br \/>\n    presm=inideais.split(':')[0] + ':';<br \/>\n  }<br \/>\n  if (inideais.indexOf('&') != -1) {<br \/>\n    postsm='&' + inideais.split('&')[1];<br \/>\n  }<br \/>\n  if (mpn == '') {<br \/>\n    if (inideais.indexOf(':') != -1) {<br \/>\n      mpn=inideais.split(':')[1].split('&')[0];<br \/>\n    }<br \/>\n    <b>var pwithindiv=withindiv;<br \/>\n    withindiv=9000;<\/b><br \/>\n    mpn=prompt('Enter phone number for SMS (or Cancel to do it at the Messager app', mpn);<br \/>\n    <b>if (pwithindiv == 0) {<br \/>\n    withindiv=0.9999;<br \/>\n    } else {<br \/>\n    withindiv=pwithindiv;<br \/>\n    }<\/b><br \/>\n    if (mpn == null) {<br \/>\n      mpn='';<br \/>\n    }<br \/>\n  }<br \/>\n  return presm + mpn + postsm;<br \/>\n}<br \/>\n<br \/>\nfunction lookforhighlight() {<br \/>\n  var usualdelay=2000, oRange=null, oRect=null, s_top='0px', s_left='5px', opis='', fourhundred=300, isfx='0', otit='';<br \/>\n  if (hight == ' ') {<br \/>\n    setTimeout(lfhlater, 5000);<br \/>\n    hight='';<br \/>\n    xcbackc=cookieHHVal('linktoothers');<br \/>\n    if (xcbackc != '') {<br \/>\n      oharr=xcbackc.split('|');<br \/>\n    }<br \/>\n  }<br \/>\n  <b>if (('' + withindiv).indexOf('.') != -1) {<br \/>\n    setTimeout(lookforhighlight, eval(('' + withindiv).split('.')[1]));<br \/>\n    withindiv=eval(('' + withindiv).split('.')[0]);<br \/>\n    return;<br \/>\n  } else if (withindiv != 0) {<br \/>\n    setTimeout(lookforhighlight, withindiv);<br \/>\n    return;<br \/>\n  } else {<br \/>\n    setTimeout(lookforhighlight, usualdelay);<br \/>\n  }<\/b><br \/>\n  var xsel=window.getSelection().toString();<br \/>\n  if (xsel.length == 0) {<br \/>\n    try {<br \/>\n    xsel=document.selection.createRange().htmlText;<br \/>\n    xsel=xsel.replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ');<br \/>\n    xsel=xsel.replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ');<br \/>\n    } catch(ertw) {<br \/>\n    xsel='';<br \/>\n    }<br \/>\n  } else {<br \/>\n    xsel=xsel.replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ');<br \/>\n    xsel=xsel.replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ');<br \/>\n    if (xsel != hight && xsel != '') {<br \/>\n     oRange = window.getSelection().getRangeAt(0); \/\/get the text range<br \/>\n     oRect = oRange.getBoundingClientRect();<br \/>\n     s_top = ('' + oRect.top).replace('px','') + 'px';<br \/>\n     s_left = ('' + oRect.left).replace('px','') + 'px';<br \/>\n     if (s_top != '0px') {<br \/>\n        fourhundred=eval('' + s_top.replace('px',''));<br \/>\n        s_top='0px';<br \/>\n        var dse='', dde='';<br \/>\n        if (document.scrollingElement) {<br \/>\n          if (document.scrollingElement.scrollTop) {<br \/>\n            dse=('' + document.scrollingElement.scrollTop);<br \/>\n          }<br \/>\n        }<br \/>\n        if (document.documentElement) {<br \/>\n          if (document.documentElement.scrollTop) {<br \/>\n            dde=('' + document.documentElement.scrollTop);<br \/>\n          }<br \/>\n        }<br \/>\n        if (dse != '') {<br \/>\n          fourhundred+=eval('' + dse.replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else if (dde != '') {<br \/>\n          fourhundred+=eval('' + dde.replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else if (('' + window.scrollY) != '') {<br \/>\n          fourhundred+=eval('' + ('' + window.scrollY).replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else if (('' + window.pageYOffset) != '') {<br \/>\n          fourhundred+=eval('' + ('' + window.pageYOffset).replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else {<br \/>\n          isfx=('' + document.body.scrollTop).replace('px','');<br \/>\n          if (isfx.replace('0','') == '') {<br \/>\n            isfx=('' + document.scrollingElement.scrollTop).replace('px','');<br \/>\n            if (isfx.replace('0','') == '') {<br \/>\n               isfx=('' + window.scrollY).replace('px','');<br \/>\n               if (isfx.replace('0','') == '') {<br \/>\n                  isfx=('' + window.pageYOffset).replace('px','');<br \/>\n               }<br \/>\n            }<br \/>\n          }<br \/>\n        }<br \/>\n        fourhundred+=100;<br \/>\n     }<br \/>\n    }<br \/>\n  }<br \/>\n  if (xsel != hight && xsel != '') {<br \/>\n    hight=xsel;<br \/>\n    if (s_top == '0px') { s_top = ('' + eval(fourhundred + eval('' + isfx))) + 'px'; }<br \/>\n    if (aec == '') {<br \/>\n          aec='&nbsp;&#128231;&nbsp;&lt;div id=daec contenteditable=true onblur=\"withindiv=<b>0<\/b>;\" <b>onchange=\"withindiv=9000;\"<\/b> onclick=\"withindiv=<b>9000<\/b>; event.stopPropagation();\"&gt;&nbsp;&nbsp;&lt;\/div&gt;';<br \/>\n    } else if (document.getElementById('daec') && document.getElementById('b_hfloater_annotated_email')) {<br \/>\n          aec=document.getElementById('b_hfloater_annotated_email').innerHTML;<br \/>\n    }<br \/>\n    if (aec.indexOf('&lt;mark&gt;' + hight + '&lt;\/mark&gt;') == -1) {<br \/>\n          if (('              ' + aec).slice(-14).substring(0,1).replace('?','.').replace('!','.') == '.') {<br \/>\n           aec=aec.replace('&lt;\/div&gt;', '&nbsp;&nbsp;&nbsp;&lt;mark&gt;' + hight + '&lt;\/mark&gt;&lt;\/div&gt;');<br \/>\n          } else {<br \/>\n           aec=aec.replace('&lt;\/div&gt;', '&nbsp;&lt;mark&gt;' + hight + '&lt;\/mark&gt;&lt;\/div&gt;');<br \/>\n          }<br \/>\n    }<br \/>\n    if (document.getElementById('hfloater')) {<br \/>\n      if (document.getElementById('hfloater').innerHTML == '') {<br \/>\n        document.getElementById('hfloater').style.position='absolute';<br \/>\n        document.getElementById('hfloater').style.top=s_top;<br \/>\n        document.getElementById('hfloater').style.left=s_left;<br \/>\n        document.getElementById('hfloater').style.zIndex='87';<br \/>\n        document.getElementById('hfloater').style.backgroundColor='rgba(255,165,0,0.9)';<br \/>\n        document.getElementById('hfloater').style.border='1px solid purple';<br \/>\n        document.getElementById('hfloater').style.padding='2px 2px 2px 2px';<br \/>\n        document.getElementById('hfloater').style.display='block';<br \/>\n        document.getElementById('hfloater').innerHTML='&lt;b&gt;Wikipedia &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/wikipedia.org\/wiki\/Main_Page\" title=\"\/\/wikipedia.org\/wiki\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'_'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'_'\" + ');\" id=b_hfloater_wikipedia&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Google Translate &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/translate.google.com\" title=\"\/\/translate.google.com\/#view=home&op=translate&sl=auto&tl=en&text=\" target=_blank onmouseover=\"this.href=this.title + encodeURIComponent(hight);\" ontouchstart=\"this.href=this.title + encodeURIComponent(hight);\" id=b_hfloater_google_translate&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Free Dictionary &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.thefreedictionary.com\/\" title=\"\/\/www.thefreedictionary.com\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" id=b_hfloater_free_dictionary&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Google Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.google.com\/\" title=\"\/\/www.google.com\/search?q=\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" id=b_hfloater_google_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Tag Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/\" title=\"\/\/www.rjmprogramming.com.au\/ITblog\/tag\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" id=b_hfloater_tag_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Category Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/\" title=\"\/\/www.rjmprogramming.com.au\/ITblog\/category\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" id=b_hfloater_category_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Tag First Word Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/\" title=\"\/\/www.rjmprogramming.com.au\/ITblog\/tag\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ').replace(' + \"'-','\/?wopenall='\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ').replace(' + \"'-','\/?wopenall='\" + ');\" id=b_hfloater_tag_first_word_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Posting Title Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/itblog\/match\/mapper.php\" title=\"\/\/www.rjmprogramming.com.au\/itblog\/match\/mapper.php?pm=\" target=_blank onmouseover=\"this.href=this.title + encodeURIComponent(hight);\" ontouchstart=\"this.href=this.title + encodeURIComponent(hight);\" id=b_hfloater_posting_title_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Email &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"mailto:?subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28' + encodeURIComponent(document.URL) + '%29&body=\" title=\"mailto:?subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28%20' + encodeURIComponent(document.URL) + '%20%29&body=\" target=_blank onmouseover=\"this.href=emaileeis(this.title) + encodeURIComponent(hight);\" ontouchstart=\"this.href=emaileeis(this.title) + encodeURIComponent(hight);\" id=b_hfloater_email&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        <b>document.getElementById('hfloater').innerHTML+='&lt;b&gt;Annotated Email &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php?to=&subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28' + encodeURIComponent(document.URL) + '%29%0a&body=\" title=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php?to=&subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28%20' + encodeURIComponent(document.URL) + '%20%29%0a&body=\" target=aeciframe onmouseover=\"this.href=emaileeis(this.title).replace(this.title.slice(-6), encodeURIComponent((this.innerText || this.contentWindow || this.contentDocument)) + this.title.slice(-6)) + encodeURIComponent(this.innerHTML.substring(this.innerHTML.indexOf(String.fromCharCode(60))));\" ontouchstart=\"this.href=emaileeis(this.title).replace(this.title.slice(-6), encodeURIComponent((this.innerText || this.contentWindow || this.contentDocument)) + this.title.slice(-6)) + encodeURIComponent(this.innerHTML.substring(this.innerHTML.indexOf(String.fromCharCode(60))));\" id=b_hfloater_annotated_email&gt;' + aec + '&lt;\/a&gt;&lt;\/b&gt;&lt;iframe name=aeciframe style=display:none; src=#&gt;&lt;\/iframe&gt;&lt;br&gt;';<\/b><br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;SMS &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"sms:&body=\" title=\"sms:&body=\" target=_blank onmouseover=\"this.href=smsee(this.title) + encodeURIComponent(hight);\" ontouchstart=\"this.href=smsee(this.title) + encodeURIComponent(hight);\" id=b_hfloater_sms&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Navigate to Link About &lt;a class=\"hlclass\" style=\"inline-block;text-decoration:underline;cursor:pointer;\" title=\" \" onclick=\"thisasearch(this.innerHTML,this);\" onmouseover=\"thisasearch(this.innerHTML,this);\" ontouchstart=\"thisasearch(this.innerHTML,this);\" id=b_hfloater_posting_a_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Display\/Copy Link About &lt;a class=\"hlclass\" style=\"inline-block;text-decoration:underline;cursor:pointer;\" title=\" \" onclick=\"thisacopysearch(this.innerHTML,this);\" onmouseover=\"thisacopysearch(this.innerHTML,this);\" ontouchstart=\"thisacopysearch(this.innerHTML,this);\" id=b_hfloater_posting_a_copy_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        if (oharr.length &gt;= 1) {<br \/>\n         for (var ioharr=0; ioharr&lt;oharr.length; ioharr++) {<br \/>\n          otit='Other Link ' + eval(1 + ioharr);<br \/>\n          if (oharr[ioharr].indexOf('#') != -1) {<br \/>\n            otit=oharr[ioharr].split('#')[1].trim();<br \/>\n          }<br \/>\n          if (oharr[ioharr].split('#')[1].indexOf('  ') == 0) {<br \/>\n            opis=hight.replace(\/\\ \/g,' + \\\"'-'\\\" + ');<br \/>\n            document.getElementById('hfloater').innerHTML+='&lt;b&gt;' + otit + ' &lt;a style=\\\"inline-block;\\\" href=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" title=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" target=_blank onmouseover=\\\"this.href=this.title + hhopis(String.fromCharCode(45));\\\" ontouchstart=\\\"this.href=this.title + hhopis(String.fromCharCode(45));\\\" id=b_hfloater_' + xcookcnt + '&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n          } else if (oharr[ioharr].split('#')[1].indexOf(' ') == 0) {<br \/>\n            opis=hight.replace(\/\\ \/g,' + \\\"'+'\\\" + ');<br \/>\n            document.getElementById('hfloater').innerHTML+='&lt;b&gt;' + otit + ' &lt;a style=\\\"inline-block;\\\" href=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" title=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" target=_blank onmouseover=\\\"this.href=this.title + hhopis(String.fromCharCode(43));\\\" ontouchstart=\\\"this.href=this.title + hhopis(String.fromCharCode(43));\\\" id=b_hfloater_' + xcookcnt + '&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n          } else {<br \/>\n            document.getElementById('hfloater').innerHTML+='&lt;b&gt;' + otit + ' &lt;a style=\\\"inline-block;\\\" href=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" title=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" target=_blank onmouseover=\\\"this.href=this.title + encodeURIComponent(hight);\\\" ontouchstart=\\\"this.href=this.title + encodeURIComponent(hight);\\\" id=b_hfloater_' + xcookcnt + '&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n          }<br \/>\n          xcookcnt++;<br \/>\n         }<br \/>\n        }<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;&lt;input title=\\\"Add your own into HTTP Cookies\\\" type=button onclick=cookiePutHHVal(xcookblank); value=+&gt;&lt;\/input&gt;&nbsp;&lt;input title=\\\"Remove all HTTP Cookie URLs\\\" type=button onclick=cookiePutHHVal(xcookblank.trim()); value=-&gt;&lt;\/input&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n      } else {<br \/>\n        document.getElementById('b_hfloater_wikipedia').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_google_translate').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_free_dictionary').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_google_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_tag_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_category_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_tag_first_word_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_posting_title_search').innerHTML=hight;<br \/>\n<br \/>\n        document.getElementById('b_hfloater_email').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_annotated_email').innerHTML=aec;<br \/>\n        document.getElementById('b_hfloater_sms').innerHTML=hight;<br \/>\n<br \/>\n        document.getElementById('b_hfloater_posting_a_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_posting_a_copy_search').innerHTML=hight;<br \/>\n<br \/>\n        if (xcookcnt &gt; 0) {<br \/>\n          for (var icook=0; icook&lt;xcookcnt; icook++) {<br \/>\n            document.getElementById('b_hfloater_' + icook).innerHTML=hight;<br \/>\n          }<br \/>\n        }<br \/>\n        document.getElementById('hfloater').style.top=s_top;<br \/>\n        document.getElementById('hfloater').style.left=s_left;<br \/>\n        document.getElementById('hfloater').style.display='block';<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (xsel == '') {<br \/>\n    if (document.getElementById('hfloater')) {<br \/>\n      document.getElementById('hfloater').style.display='none';<br \/>\n    }<br \/>\n    hight='';<br \/>\n  }<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Some email clients baulk at downloading HTML attachments, so the other change today is to append the wording of the email&#8217;s inherent HTML to the email subject, so if an emailee is unlucky in this way, they can still get &#8220;second prize&#8221; &#8230; but no cigar!<\/p>\n<hr>\n<p id='wpbcaet'>Previous relevant <a target=\"_blank\" title='WordPress Blog Collaborative Annotated Email Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-collaborative-annotated-email-tutorial\/' rel=\"noopener\">WordPress Blog Collaborative Annotated Email Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/wordpress\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Blog Collaborative Annotated Email Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/wordpress\/wp_annotated_email.jpg\" title=\"WordPress Blog Collaborative Annotated Email Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Blog Collaborative Annotated Email Tutorial<\/p><\/div>\n<p>Further to <a title='WordPress Plugin Primer Tutorial' href='#wpppt'>WordPress Plugin Primer Tutorial<\/a> of recent times, we&#8217;re adding to that &#8220;highlighting of blog text&#8221; (dynamic menu) the options &#8230;<\/p>\n<ul>\n<li>Email (that highlighted text) via the email client application via a &#8220;mailto:&#8221; &#8220;a&#8221; link<\/li>\n<li>SMS (that highlighted text) via the email client application via a &#8220;sms:&#8221; &#8220;a&#8221; link<\/li>\n<li>Annotated Email of the highlighted text converted to <a target=\"_blank\" title='HTML5 mark tag information from w3schools' href='https:\/\/www.w3schools.com\/tags\/tag_mark.asp' rel=\"noopener\"><i>mark<\/i><\/a> (marked up) text, accumulated onto for the whole WordPress blog session,and emailed off via PHP&#8217;s <a target=\"_blank\" title='PHP mail method information' href='http:\/\/php.net\/manual\/en\/function.mail.php' rel=\"noopener\">mail<\/a> function, as an HTML email attachment (downloaded at the emailee end)<\/li>\n<\/ul>\n<p> &#8230; and we think the last of these has good scope for collaborative thoughts and usages.   Want to try it out?  You&#8217;re here, ready.  Just highlight some text to get started.<\/p>\n<p>Into the WordPress (<a target=\"_blank\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-multi-lookup.php----GETME\" title=\"plugins\/rjmprogramming-multi-lookup.php\" rel=\"noopener\">changed PHP<\/a> <a target=\"_blank\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-multi-lookup.php----GETME\" title=\"plugins\/rjmprogramming-multi-lookup.php\" rel=\"noopener\">rjmprogramming-multi-lookup.php<\/a>) plugin or header.php the changed (<b>header.php<\/b>) code involves new Javascript (that dynamically creates HTML) as per &#8230;<\/p>\n<p><code><br \/>\n<b>var mpn='', eod='', aec='', withindiv=false;<\/b><br \/>\n<br \/>\n<b>function emaileeis(inideais) {<br \/>\n  var presm='', postsm='';<br \/>\n  if (inideais.indexOf(':') != -1) {<br \/>\n    presm=inideais.split(':')[0] + ':';<br \/>\n    postsm=inideais.replace(presm,'');<br \/>\n  } else if (inideais.indexOf('?to=') != -1) {<br \/>\n    presm=inideais.split('?to=')[0] + '?to=';<br \/>\n    if (inideais.indexOf('&') != -1) {<br \/>\n    postsm=inideais.replace(presm,'').replace(inideais.split('?to=')[1].split('&')[0],'');<br \/>\n    }<br \/>\n  } else if (inideais.indexOf('&') != -1) {<br \/>\n    presm=inideais.split('&')[0] + '&';<br \/>\n    postsm=inideais.replace(presm,'');<br \/>\n  } else {<br \/>\n    presm=inideais.split('?')[0];<br \/>\n    postsm=inideais.replace(presm,'');<br \/>\n  }<br \/>\n  if (eod == '') {<br \/>\n    if (inideais.indexOf('?to=') != -1) {<br \/>\n      eod=inideais.split('?to=')[1].split('&')[0];<br \/>\n    }<br \/>\n    eod=prompt('Enter email address', eod);<br \/>\n    if (eod == null) {<br \/>\n      eod='';<br \/>\n    }<br \/>\n  }<br \/>\n  return presm + encodeURIComponent(eod) + postsm;<br \/>\n}  <\/b><br \/>\n<br \/>\n<b>function smsee(inideais) {<br \/>\n  var presm='', postsm='';<br \/>\n  if (inideais.indexOf(':') != -1) {<br \/>\n    presm=inideais.split(':')[0] + ':';<br \/>\n  }<br \/>\n  if (inideais.indexOf('&') != -1) {<br \/>\n    postsm='&' + inideais.split('&')[1];<br \/>\n  }<br \/>\n  if (mpn == '') {<br \/>\n    if (inideais.indexOf(':') != -1) {<br \/>\n      mpn=inideais.split(':')[1].split('&')[0];<br \/>\n    }<br \/>\n    mpn=prompt('Enter phone number for SMS (or Cancel to do it at the Messager app', mpn);<br \/>\n    if (mpn == null) {<br \/>\n      mpn='';<br \/>\n    }<br \/>\n  }<br \/>\n  return presm + mpn + postsm;<br \/>\n} <\/b><br \/>\n<br \/>\nfunction lookforhighlight() {<br \/>\n  var usualdelay=2000, oRange=null, oRect=null, s_top='0px', s_left='5px', opis='', fourhundred=300, isfx='0', otit='';<br \/>\n  if (hight == ' ') {<br \/>\n    setTimeout(lfhlater, 5000);<br \/>\n    hight='';<br \/>\n    xcbackc=cookieHHVal('linktoothers');<br \/>\n    if (xcbackc != '') {<br \/>\n      oharr=xcbackc.split('|');<br \/>\n    }<br \/>\n  }<br \/>\n  setTimeout(lookforhighlight, usualdelay);<br \/>\n  <b>if (withindiv) { return;  }<\/b><br \/>\n  var xsel=window.getSelection().toString();<br \/>\n  if (xsel.length == 0) {<br \/>\n    try {<br \/>\n    xsel=document.selection.createRange().htmlText;<br \/>\n    xsel=xsel.replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ');<br \/>\n    xsel=xsel.replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ');<br \/>\n    } catch(ertw) {<br \/>\n    xsel='';<br \/>\n    }<br \/>\n  } else {<br \/>\n    xsel=xsel.replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ').replace(String.fromCharCode(10),' ');<br \/>\n    xsel=xsel.replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ').replace(String.fromCharCode(13),' ');<br \/>\n    if (xsel != hight && xsel != '') {<br \/>\n     oRange = window.getSelection().getRangeAt(0); \/\/get the text range<br \/>\n     oRect = oRange.getBoundingClientRect();<br \/>\n     s_top = ('' + oRect.top).replace('px','') + 'px';<br \/>\n     s_left = ('' + oRect.left).replace('px','') + 'px';<br \/>\n     if (s_top != '0px') {<br \/>\n        fourhundred=eval('' + s_top.replace('px',''));<br \/>\n        s_top='0px';<br \/>\n        var dse='', dde='';<br \/>\n        if (document.scrollingElement) {<br \/>\n          if (document.scrollingElement.scrollTop) {<br \/>\n            dse=('' + document.scrollingElement.scrollTop);<br \/>\n          }<br \/>\n        }<br \/>\n        if (document.documentElement) {<br \/>\n          if (document.documentElement.scrollTop) {<br \/>\n            dde=('' + document.documentElement.scrollTop);<br \/>\n          }<br \/>\n        }<br \/>\n        if (dse != '') {<br \/>\n          fourhundred+=eval('' + dse.replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else if (dde != '') {<br \/>\n          fourhundred+=eval('' + dde.replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else if (('' + window.scrollY) != '') {<br \/>\n          fourhundred+=eval('' + ('' + window.scrollY).replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else if (('' + window.pageYOffset) != '') {<br \/>\n          fourhundred+=eval('' + ('' + window.pageYOffset).replace('px',''));<br \/>\n          isfx='0';<br \/>\n        } else {<br \/>\n          isfx=('' + document.body.scrollTop).replace('px','');<br \/>\n          if (isfx.replace('0','') == '') {<br \/>\n            isfx=('' + document.scrollingElement.scrollTop).replace('px','');<br \/>\n            if (isfx.replace('0','') == '') {<br \/>\n               isfx=('' + window.scrollY).replace('px','');<br \/>\n               if (isfx.replace('0','') == '') {<br \/>\n                  isfx=('' + window.pageYOffset).replace('px','');<br \/>\n               }<br \/>\n            }<br \/>\n          }<br \/>\n        }<br \/>\n        fourhundred+=100;<br \/>\n     }<br \/>\n    }<br \/>\n  }<br \/>\n  if (xsel != hight && xsel != '') {<br \/>\n    hight=xsel;<br \/>\n    if (s_top == '0px') { s_top = ('' + eval(fourhundred + eval('' + isfx))) + 'px'; }<br \/>\n    <b>if (aec == '') {<br \/>\n          aec='&nbsp;&#128231;&nbsp;&lt;div id=daec contenteditable=true onblur=\"withindiv=false;\" onclick=\"withindiv=true; event.stopPropagation();\"&gt;&nbsp;&nbsp;&lt;\/div&gt;';<br \/>\n    } else if (document.getElementById('daec') && document.getElementById('b_hfloater_annotated_email')) {<br \/>\n          aec=document.getElementById('b_hfloater_annotated_email').innerHTML;<br \/>\n    }<br \/>\n    if (aec.indexOf('&lt;mark&gt;' + hight + '&lt;\/mark&gt;') == -1) {<br \/>\n          if (('              ' + aec).slice(-14).substring(0,1).replace('?','.').replace('!','.') == '.') {<br \/>\n           aec=aec.replace('&lt;\/div&gt;', '&nbsp;&nbsp;&nbsp;&lt;mark&gt;' + hight + '&lt;\/mark&gt;&lt;\/div&gt;');<br \/>\n          } else {<br \/>\n           aec=aec.replace('&lt;\/div&gt;', '&nbsp;&lt;mark&gt;' + hight + '&lt;\/mark&gt;&lt;\/div&gt;');<br \/>\n          }<br \/>\n    }  <\/b><br \/>\n    if (document.getElementById('hfloater')) {<br \/>\n      if (document.getElementById('hfloater').innerHTML == '') {<br \/>\n        document.getElementById('hfloater').style.position='absolute';<br \/>\n        document.getElementById('hfloater').style.top=s_top;<br \/>\n        document.getElementById('hfloater').style.left=s_left;<br \/>\n        document.getElementById('hfloater').style.zIndex='87';<br \/>\n        document.getElementById('hfloater').style.backgroundColor='rgba(255,165,0,0.9)';<br \/>\n        document.getElementById('hfloater').style.border='1px solid purple';<br \/>\n        document.getElementById('hfloater').style.padding='2px 2px 2px 2px';<br \/>\n        document.getElementById('hfloater').style.display='block';<br \/>\n        document.getElementById('hfloater').innerHTML='&lt;b&gt;Wikipedia &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/wikipedia.org\/wiki\/Main_Page\" title=\"\/\/wikipedia.org\/wiki\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'_'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'_'\" + ');\" id=b_hfloater_wikipedia&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Google Translate &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/translate.google.com\" title=\"\/\/translate.google.com\/#view=home&op=translate&sl=auto&tl=en&text=\" target=_blank onmouseover=\"this.href=this.title + encodeURIComponent(hight);\" ontouchstart=\"this.href=this.title + encodeURIComponent(hight);\" id=b_hfloater_google_translate&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Free Dictionary &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.thefreedictionary.com\/\" title=\"\/\/www.thefreedictionary.com\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" id=b_hfloater_free_dictionary&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Google Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.google.com\/\" title=\"\/\/www.google.com\/search?q=\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'+'\" + ');\" id=b_hfloater_google_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Tag Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/\" title=\"\/\/www.rjmprogramming.com.au\/ITblog\/tag\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" id=b_hfloater_tag_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Category Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/\" title=\"\/\/www.rjmprogramming.com.au\/ITblog\/category\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ');\" id=b_hfloater_category_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Tag First Word Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/ITblog\/\" title=\"\/\/www.rjmprogramming.com.au\/ITblog\/tag\/\" target=_blank onmouseover=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ').replace(' + \"'-','\/?wopenall='\" + ');\" ontouchstart=\"this.href=this.title + hight.replace(\/\\ \/g,' + \"'-'\" + ').replace(' + \"'-','\/?wopenall='\" + ');\" id=b_hfloater_tag_first_word_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Posting Title Search &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/itblog\/match\/mapper.php\" title=\"\/\/www.rjmprogramming.com.au\/itblog\/match\/mapper.php?pm=\" target=_blank onmouseover=\"this.href=this.title + encodeURIComponent(hight);\" ontouchstart=\"this.href=this.title + encodeURIComponent(hight);\" id=b_hfloater_posting_title_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n<br \/>\n        <b>document.getElementById('hfloater').innerHTML+='&lt;b&gt;Email &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"mailto:?subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28' + encodeURIComponent(document.URL) + '%29&body=\" title=\"mailto:?subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28%20' + encodeURIComponent(document.URL) + '%20%29&body=\" target=_blank onmouseover=\"this.href=emaileeis(this.title) + encodeURIComponent(hight);\" ontouchstart=\"this.href=emaileeis(this.title) + encodeURIComponent(hight);\" id=b_hfloater_email&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Annotated Email &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php?to=&subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28' + encodeURIComponent(document.URL) + '%29&body=\" title=\"\/\/www.rjmprogramming.com.au\/HTMLCSS\/emailhtml.php?to=&subject=Re%3a%20' + encodeURIComponent(thetwords) + '%20%28%20' + encodeURIComponent(document.URL) + '%20%29&body=\" target=aeciframe onmouseover=\"this.href=emaileeis(this.title) + encodeURIComponent(this.innerHTML.substring(this.innerHTML.indexOf(String.fromCharCode(60))));\" ontouchstart=\"this.href=emaileeis(this.title) + encodeURIComponent(this.innerHTML.substring(this.innerHTML.indexOf(String.fromCharCode(60))));\" id=b_hfloater_annotated_email&gt;' + aec + '&lt;\/a&gt;&lt;\/b&gt;&lt;iframe name=aeciframe style=display:none; src=#&gt;&lt;\/iframe&gt;&lt;br&gt;';        document.getElementById('hfloater').innerHTML+='&lt;b&gt;SMS &lt;a class=\"hlclass\" style=\"inline-block;\" href=\"sms:&body=\" title=\"sms:&body=\" target=_blank onmouseover=\"this.href=smsee(this.title) + encodeURIComponent(hight);\" ontouchstart=\"this.href=smsee(this.title) + encodeURIComponent(hight);\" id=b_hfloater_sms&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n<\/b><br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Navigate to Link About &lt;a class=\"hlclass\" style=\"inline-block;text-decoration:underline;cursor:pointer;\" title=\" \" onclick=\"thisasearch(this.innerHTML,this);\" onmouseover=\"thisasearch(this.innerHTML,this);\" ontouchstart=\"thisasearch(this.innerHTML,this);\" id=b_hfloater_posting_a_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;Display\/Copy Link About &lt;a class=\"hlclass\" style=\"inline-block;text-decoration:underline;cursor:pointer;\" title=\" \" onclick=\"thisacopysearch(this.innerHTML,this);\" onmouseover=\"thisacopysearch(this.innerHTML,this);\" ontouchstart=\"thisacopysearch(this.innerHTML,this);\" id=b_hfloater_posting_a_copy_search&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n        if (oharr.length &gt;= 1) {<br \/>\n         for (var ioharr=0; ioharr&lt;oharr.length; ioharr++) {<br \/>\n          otit='Other Link ' + eval(1 + ioharr);<br \/>\n          if (oharr[ioharr].indexOf('#') != -1) {<br \/>\n            otit=oharr[ioharr].split('#')[1].trim();<br \/>\n          }<br \/>\n          if (oharr[ioharr].split('#')[1].indexOf('  ') == 0) {<br \/>\n            opis=hight.replace(\/\\ \/g,' + \\\"'-'\\\" + ');<br \/>\n            document.getElementById('hfloater').innerHTML+='&lt;b&gt;' + otit + ' &lt;a style=\\\"inline-block;\\\" href=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" title=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" target=_blank onmouseover=\\\"this.href=this.title + hhopis(String.fromCharCode(45));\\\" ontouchstart=\\\"this.href=this.title + hhopis(String.fromCharCode(45));\\\" id=b_hfloater_' + xcookcnt + '&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n          } else if (oharr[ioharr].split('#')[1].indexOf(' ') == 0) {<br \/>\n            opis=hight.replace(\/\\ \/g,' + \\\"'+'\\\" + ');<br \/>\n            document.getElementById('hfloater').innerHTML+='&lt;b&gt;' + otit + ' &lt;a style=\\\"inline-block;\\\" href=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" title=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" target=_blank onmouseover=\\\"this.href=this.title + hhopis(String.fromCharCode(43));\\\" ontouchstart=\\\"this.href=this.title + hhopis(String.fromCharCode(43));\\\" id=b_hfloater_' + xcookcnt + '&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n          } else {<br \/>\n            document.getElementById('hfloater').innerHTML+='&lt;b&gt;' + otit + ' &lt;a style=\\\"inline-block;\\\" href=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" title=\\\"' + oharr[ioharr].split('#')[0].trim() + '\\\" target=_blank onmouseover=\\\"this.href=this.title + encodeURIComponent(hight);\\\" ontouchstart=\\\"this.href=this.title + encodeURIComponent(hight);\\\" id=b_hfloater_' + xcookcnt + '&gt;' + hight + '&lt;\/a&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n          }<br \/>\n          xcookcnt++;<br \/>\n         }<br \/>\n        }<br \/>\n        document.getElementById('hfloater').innerHTML+='&lt;b&gt;&lt;input title=\\\"Add your own into HTTP Cookies\\\" type=button onclick=cookiePutHHVal(xcookblank); value=+&gt;&lt;\/input&gt;&nbsp;&lt;input title=\\\"Remove all HTTP Cookie URLs\\\" type=button onclick=cookiePutHHVal(xcookblank.trim()); value=-&gt;&lt;\/input&gt;&lt;\/b&gt;&lt;br&gt;';<br \/>\n      } else {<br \/>\n        document.getElementById('b_hfloater_wikipedia').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_google_translate').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_free_dictionary').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_google_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_tag_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_category_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_tag_first_word_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_posting_title_search').innerHTML=hight;<br \/>\n<br \/><b><br \/>\n        document.getElementById('b_hfloater_email').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_annotated_email').innerHTML=aec;<br \/>\n        document.getElementById('b_hfloater_sms').innerHTML=hight;<br \/>\n<\/b><br \/>\n        document.getElementById('b_hfloater_posting_a_search').innerHTML=hight;<br \/>\n        document.getElementById('b_hfloater_posting_a_copy_search').innerHTML=hight;<br \/>\n<br \/>\n        if (xcookcnt &gt; 0) {<br \/>\n          for (var icook=0; icook&lt;xcookcnt; icook++) {<br \/>\n            document.getElementById('b_hfloater_' + icook).innerHTML=hight;<br \/>\n          }<br \/>\n        }<br \/>\n        document.getElementById('hfloater').style.top=s_top;<br \/>\n        document.getElementById('hfloater').style.left=s_left;<br \/>\n        document.getElementById('hfloater').style.display='block';<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (xsel == '') {<br \/>\n    if (document.getElementById('hfloater')) {<br \/>\n      document.getElementById('hfloater').style.display='none';<br \/>\n    }<br \/>\n    hight='';<br \/>\n  }<br \/>\n}<br \/>\n<\/code> <\/p>\n<hr>\n<p id='wpppt'>Previous relevant <a target=\"_blank\" title='WordPress Plugin Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-plugin-primer-tutorial\/' rel=\"noopener\">WordPress Plugin Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress_plugin_simple.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WordPress Plugin Primer Tutorial\" src=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress_plugin_simple.gif\" title=\"WordPress Plugin Primer Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WordPress Plugin Primer Tutorial<\/p><\/div>\n<p>Normally we make changes to this TwentyTen themed WordPress blog by changing that theme&#8217;s wp-content\/themes\/twentyten\/header.php file.  But today we show you how to write the PHP code needed to write a <a target=\"_blank\" title='WordPress.org' href='http:\/\/www.wordpress.org' rel=\"noopener\">WordPress.org<\/a> admin login <a target=\"_blank\" title='Plugin information from Wikipedia' href='https:\/\/en.wikipedia.org\/wiki\/Plug-in_(computing)' rel=\"noopener\">plugin<\/a> to create a hyperlink to a Wikipedia page regarding any text you have highlighted on your WordPress admin area webpage.<\/p>\n<p>We thank &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='Codex' href='https:\/\/codex.wordpress.org\/' rel=\"noopener\">WordPress Codex<\/a><\/li>\n<li><a target=\"_blank\" title='Writing a Plugin' href='https:\/\/codex.wordpress.org\/Writing_a_Plugin' rel=\"noopener\">WordPress Codex &#8220;Writing a Plugin&#8221;<\/a><\/li>\n<li><a target=\"_blank\" title='Plugin API' href='https:\/\/codex.wordpress.org\/Plugin_API' rel=\"noopener\">WordPress Codex &#8220;Plugin API&#8221;<\/a><\/li>\n<li><a target=\"_blank\" title='Hello Dolly plugin' href='https:\/\/wordpress.org\/plugins\/hello-dolly\/' rel=\"noopener\">Hello Dolly plugin<\/a><\/li>\n<\/ul>\n<p> &#8230; and we think you should read &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='WordPress Codex Hooks' href='https:\/\/developer.wordpress.org\/reference\/hooks\/' rel=\"noopener\">Hooks<\/a><\/li>\n<li><a target=\"_blank\" title='WordPress Codex Actions' href='https:\/\/codex.wordpress.org\/Glossary#Action' rel=\"noopener\">Actions<\/a><\/li>\n<li><a target=\"_blank\" title='WordPress Codex Filters' href='https:\/\/codex.wordpress.org\/Glossary#Filter' rel=\"noopener\">Filters<\/a><\/li>\n<li><a target=\"_blank\" title='WordPress Codex Pluggable Functions' href='https:\/\/codex.wordpress.org\/Plugin_API#Pluggable_Functions' rel=\"noopener\">Pluggable Functions<\/a><\/li>\n<li><a target=\"_blank\" title='WordPress Codex Plugins directory' href='https:\/\/codex.wordpress.org\/Function_Reference\/plugin_dir_url' rel=\"noopener\"><b>Plugins directory<\/b><\/a><\/li>\n<\/ul>\n<p>For us, with our very simple <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-content\/plugins\/rjmprogramming-wikipedia-lookup.php_GETME\" rel=\"noopener\">rjmprogramming-wikipedia-lookup.php<\/a> plugin, we only needed the one piece of PHP to sit in the current WordPress <b>wp-content\/plugins<\/b> directory, and then immediately be accessible to the WordPress blog admin area\u2019s Plugins -&gt; Activate option &#8230;<\/p>\n<p><code><br \/>\n&lt;?php<br \/>\n\/**<br \/>\n * @package Rjmprogramming_Wikipedia_Lookup<br \/>\n * @version 1.6<br \/>\n *\/<br \/>\n\/*<br \/>\nPlugin Name: Rjmprogramming Wikipedia Lookup<br \/>\nDescription: Float a Wikipedia lookup link for highlighted text of an admin webpage.<br \/>\nAuthor: Robert James Metcalfe<br \/>\nVersion: 1.6<br \/>\nAuthor URI: http:\/\/www.rjmprogramming.com.au\/<br \/>\n*\/<br \/>\n<br \/>\n\/\/ This creates the Wikipedia lookup hyperlink<br \/>\nfunction rjmprogramming_wikipedia_lookup() {<br \/>\n\t$wikipedia_page = \"Wikipedia Main Page\";<br \/>\n\techo '&lt;a target=\"_blank\" title=\"Wikipedia lookup of ...\" onmouseover=\"var xsel=' .<br \/>\n\t  \"''\" . '; xsel=window.getSelection().toString(); if (xsel.length == 0) {' .<br \/>\n\t  ' xsel=document.selection.createRange().htmlText;' .<br \/>\n\t  ' } if (xsel.length != 0) { this.innerHTML=xsel; this.href=' . \"'\" . '\/\/wikipedia.org\/wiki\/' .<br \/>\n\t  \"'\" . ' + xsel.replace(\/\\ \/g,' . \"'\" . '_' . \"'\" . '); } \" ontouchstart=\"var xsel=' .<br \/>\n\t  '; xsel=window.getSelection().toString(); if (xsel.length == 0) {' .<br \/>\n\t  ' xsel=document.selection.createRange().htmlText; }' .<br \/>\n\t  ' if (xsel.length != 0) { this.innerHTML=xsel; this.href=' . \"'\" . '\/\/wikipedia.org\/wiki\/' . \"'\" .<br \/>\n\t  ' + xsel.replace(\/\\ \/g,' . \"'\" . '_' . \"'\" . '); } \" id=\"rjmprogramming_wikipedia_lookup\"' .<br \/>\n\t  ' href=\"\/\/wikipedia.org\/wiki\/Main_Page\"&gt;' . $wikipedia_page . '&lt;\/a&gt;';<br \/>\n}<br \/>\n<br \/>\n\/\/ Now we set that function up to execute when the admin_notices action is called<br \/>\nadd_action( 'admin_notices', 'rjmprogramming_wikipedia_lookup' );<br \/>\n<br \/>\n\/\/ We need some CSS to position the hyperlink<br \/>\nfunction rjmprogramming_wikipedia_css() {<br \/>\n\t\/\/ This makes sure that the positioning is also good for right-to-left languages<br \/>\n\t$x = is_rtl() ? 'left' : 'right';<br \/>\n<br \/>\n\techo \"<br \/>\n\t&lt;style type='text\/css'&gt;<br \/>\n\t#rjmprogramming_wikipedia_lookup {<br \/>\n\t\tfloat: $x;<br \/>\n\t\tpadding-$x: 15px;<br \/>\n\t\tpadding-top: 5px;<br \/>\n\t\tmargin: 0;<br \/>\n\t\tfont-size: 11px;<br \/>\n\t}<br \/>\n\t&lt;\/style&gt;<br \/>\n\t\";<br \/>\n}<br \/>\n<br \/>\nadd_action( 'admin_footer', 'rjmprogramming_wikipedia_css' );<br \/>\n<br \/>\n?&gt;<br \/>\n<\/code><\/p>\n<p>We hope this is of interest to you.<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d43582' onclick='var dv=document.getElementById(\"d43582\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/plugin\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d43582' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d44899' onclick='var dv=document.getElementById(\"d44899\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/mark\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d44899' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d44905' onclick='var dv=document.getElementById(\"d44905\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/setTimeout\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d44905' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d44915' onclick='var dv=document.getElementById(\"d44915\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/formdata\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d44915' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d45890' onclick='var dv=document.getElementById(\"d45890\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/plugin\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d45890' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d66485' onclick='var dv=document.getElementById(\"d66485\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/comment\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d66485' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d69775' onclick='var dv=document.getElementById(\"d69775\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/moderation\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d69775' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;re coming back to the previous WordPress administrator Comment moderation section URL Popup Window Checker functionality last talked about with WordPress Blog Comments URL Right Click Popup Check Tutorial. We were finding before this Javascript code fix &#8230; &lt;?php setTimeout(function(){ &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/wordpress-blog-comments-url-right-click-popup-check-prevent-default-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[3418,5061,61,5062,151,4990,2372,216,1985,4173,2014,355,400,652,1807,2122,5063,932,967,997,1069,3535,3125,1319],"class_list":["post-69775","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-admin","tag-admin-header-php","tag-administration","tag-adminstration-user","tag-blog","tag-broken-link","tag-check","tag-cms","tag-comment","tag-comments","tag-content-management-system","tag-domain","tag-event","tag-javascript","tag-link","tag-moderation","tag-oncontentmenu","tag-php","tag-popup","tag-programming","tag-right-click","tag-sanity-check","tag-spam","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/69775"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=69775"}],"version-history":[{"count":13,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/69775\/revisions"}],"predecessor-version":[{"id":69791,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/69775\/revisions\/69791"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=69775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=69775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=69775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}