{"id":64121,"date":"2024-07-06T03:01:12","date_gmt":"2024-07-05T17:01:12","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=64121"},"modified":"2024-07-06T14:26:21","modified_gmt":"2024-07-06T04:26:21","slug":"google-charts-totally-hashtagging-communication-conduits-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/google-charts-totally-hashtagging-communication-conduits-tutorial\/","title":{"rendered":"Google Charts Totally Hashtagging Communication Conduits Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\"><img decoding=\"async\" onload=\"setInterval(function(){ if (('' + document.getElementById('myasbig').style.display).toLowerCase().indexOf('none') != -1) { document.getElementById('myasbig').style.display='inline'; document.getElementById('myabig').style.display='none';   } else { document.getElementById('myabig').style.display='inline'; document.getElementById('myasbig').style.display='none';  } }, 40000);\" style=\"border: 15px solid pink;\" alt=\"Google Charts Totally Hashtagging Communication Conduits Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/google_charts_totally_hashtag_communication_conduits.gif\" title=\"Google Charts Totally Hashtagging Communication Conduits Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Google Charts Totally Hashtagging Communication Conduits Tutorial<\/p><\/div>\n<p>The work of <a title='Form Target Self Primer Tutorial' href='#ftspt'>Form Target Self Primer Tutorial<\/a> got us thinking &#8230;<\/p>\n<ol>\n<li>Could it be applied to our inhouse Google Charts PHP web applications?<\/li>\n<li>And if so, is the work generic enough to just be applied to our gchartgen.js external Javascript they, mostly, all use?<\/li>\n<li>And proceeding forward, if it works, how can it help? <font size=1>(Everybody needs a dorothy dixer?!)<\/font><\/li>\n<\/ol>\n<p> &#8230; and the jury&#8217;s in &#8230;<\/p>\n<ol>\n<li>Yes<\/li>\n<li>95%<\/li>\n<li>Email and SMS communications could all be hashtag navigation based on URLs not needing PHP mail nearly as much<\/li>\n<\/ol>\n<p>In arriving at our &#8220;hived off&#8221; (because it is useful just itself for other &#8220;parents&#8221; out there <font size=1>(as what we like to think of as a &#8220;tool&#8221;)<\/font>, we&#8217;re thinking) <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/hashtagdata_self_post.js_GETME\">hashtagdata_self_post.js<\/a> &#8230;<\/p>\n<p><code><br \/>\n\/\/ hashtagdata_self_post.js<br \/>\n\/\/ RJM Programming<br \/>\n\/\/ July, 2024<br \/>\n<br \/>\nfunction checkfortotalhash() {<br \/>\n \/\/document.title='1';<br \/>\n \/\/document.title='11';<br \/>\n \/\/document.title='111';<br \/>\n if (('' + location.href).split('#')[0].indexOf('?') == -1 && ('' + location.hash).indexOf('=') != -1) {<br \/>\n \/\/document.title='1111';<br \/>\n  if (eval('' + ((('' + location.href).split('#')[0].split('?')[0].split('#')[0] + location.hash)).length) &lt; 800) {<br \/>\n   \/\/prompt = function(zwords, defwords){ return null; };<br \/>\n   location.href=(('' + location.href).split('#')[0].split('?')[0].split('#')[0] + location.hash).replace('#','?');<br \/>\n  } else if (('' + location.href).split('#')[0].split('?')[0].split('#')[0].indexOf('.htm') == -1) {<br \/>\n \/\/document.title='11111';<br \/>\n   \/\/prompt = function(zwords, defwords){ return null; };<br \/>\n \/\/document.title='111111';<br \/>\n   var wlytsp=false;<br \/>\n   var formdt='&lt;form action=\"' + ('' + location.href).split('#')[0].split('?')[0].split('#')[0] + '\" method=\"POST\" target=\"_self\"&gt; &lt;input type=\"submit\" id=\"checkforb\"&gt;&lt;\/input&gt;&lt;\/form&gt;';<br \/>\n   var labvals=[], ilv=0;<br \/>\n   labvals=('' + location.hash).split('=');<br \/>\n   for (ilv=1; ilv&lt;labvals.length; ilv++) {<br \/>\n   if (labvals[eval(-1 + ilv)].replace(\/^\\#\/g,'&').split('&')[eval(-1 + labvals[eval(-1 + ilv)].replace(\/^\\#\/g,'&').split('&').length)] == 'wouldlikeyoutoseekpermission') {<br \/>\n    wlytsp=true;<br \/>\n   }<br \/>\n   formdt=formdt.replace('&lt;input type=\"submit\"', '&lt;input type=\"hidden\" name=\"' + labvals[eval(-1 + ilv)].replace(\/^\\#\/g,'&').split('&')[eval(-1 + labvals[eval(-1 + ilv)].replace(\/^\\#\/g,'&').split('&').length)] + '\" value=\"' + decodeURIComponent(labvals[ilv].split('&')[0]) + '\"&gt;&lt;\/input&gt;&lt;input type=\"submit\"');<br \/>\n   }<br \/>\n \/\/document.title='1111111';<br \/>\n   setTimeout(function(){<br \/>\n   if (!wlytsp) {<br \/>\n   \/\/alert(formdt.replace('&gt; &lt;', '&gt;&lt;input type=hidden name=wouldlikeyoutoseekpermission value=y&gt;&lt;\/input&gt;&lt;'));<br \/>\n   document.body.innerHTML+=formdt.replace('&gt; &lt;', '&gt;&lt;input type=hidden name=wouldlikeyoutoseekpermission value=y&gt;&lt;\/input&gt;&lt;');<br \/>\n   } else {<br \/>\n   \/\/alert(formdt.slice(-220));<br \/>\n   document.body.innerHTML+=formdt;<br \/>\n   }<br \/>\n   document.getElementById('checkforb').click();<br \/>\n   }, 1000);<br \/>\n  }<br \/>\n }<br \/>\n}<br \/>\n<br \/>\n<font color=blue>if (('' + location.href).indexOf('\/GeoChart') == -1) {<\/font><br \/>\ncheckfortotalhash();<br \/>\n<font color=blue>}<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; proof of concept start we made a discovery that surprised us with &#8230;<\/p>\n<ul>\n<li>when an intervention point for external Javascript occurs before the webpage&#8217;s document.body onload event &#8230;<\/li>\n<li>you do better scouring <i>location.href<\/i> rather than <i>document.URL<\/i> <font size=1>(though, curiously, <i>document.title<\/i> is okay)<\/font> and that location.href may contain hashtagging data <font size=1>(or we were dreaming &#8230; anyway, we&#8217;ve coded for either)<\/font> &#8230; and &#8230;<\/li>\n<li>is okay recognizing <i>location.hash<\/i> hashtagging data &#8230; but &#8230;<\/li>\n<li>we found a <a target=_blank href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/setTimeout'>setTimeout<\/a> arrangement of adding a form to <i>document.body.innerHTML<\/i> helps get past the document.body onload event starting timing<\/li>\n<\/ul>\n<p> &#8230; and exceptions for web applications <i>doing their own th<strike>a<\/strike>ing<\/i> here <font color=blue>should be considered<\/font>.<\/p>\n<p>And so we used as our guinea pig <a title=\"Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.\" href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/index\" target=\"_blank\">Google Chart<\/a> to try, the inhouse <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php\">Pie Chart<\/a> interfacer, as you can see from today&#8217;s <a target=_blank title='Tutorial picture' href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/google_charts_totally_hashtag_communication_conduits.gif'>animated GIF presentation<\/a> to prove this &#8230;<\/p>\n<ul>\n<li>navigational arrangement &#8220;proof of concept&#8221; methodology <i>converting hashtagged incoming data into an HTML form method=POST target=_self action=[HereIsLookingAtYouKid] navigation back onto itself<\/i> &#8230; and when happy just slapped that into <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/gchartgen.js-----------------------GETME\" title=\"geo_chart.php\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/gchartgen.js-----------------------GETME\" title=\"geo_chart.php\">gchartgen.js<\/a> external Javascript helper &#8230; along with &#8230;<\/li>\n<li>email (mailto:) and SMS (sms:) URL tweaks to change <i>?<\/i> to <i>#<\/i> to bypass the PHP server woooooorrrrrrllllllddd (and any PHP mail servers) for the Javascript client mailto: and sms: communication conduit wooooooorrrrrllllldddd &#8230; causing within a Javascript function called <i>iftoobig<\/i> &#8230; <font color=purple>the changes<\/font> &#8230;<br \/>\n<code><br \/>\n  if (eval(eval(urlin.length) + eval(urldata.length) + eval(urldata0.length)) &lt; 800<font color=purple> || urlin.split('?')[0].split('#')[0].length &lt; 800<\/font>) { \/\/1000) { \/\/ vs 2000<br \/>\n    return urlin<font color=purple>.replace('?','#')<\/font>;<br \/>\n  }<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p>Bear in mind, this is not ignoring the serverside.  You&#8217;ll notice the chance of form method=POST coming into consideration.  You need a serverside language to handle that method=POST &#8230; it&#8217;s just that not involving a PHP mail server and the <i>mail<\/i> command, when the amounts of data are substantial, so often, is the improvement, to our mind.<\/p>\n<p>All that being so URLs such as the Google Chart Pie Chart <font size=1>(meddled around with)<\/font> one &#8230;<\/p>\n<p><iframe src='\/About_Us.html' style=display:none; data-onload=\"setInterval(function(){ if (('' + document.getElementById('myabig').getAttribute('contenteditable')) == 'true') { document.getElementById('myabig').removeAttribute('contenteditable'); document.getElementById('myabig').style.border='0px solid transparent'; document.getElementById('divabig').innerHTML=document.getElementById('divabig').innerHTML.replace(\/span\/g,'a'); } else { document.getElementById('myabig').setAttribute('contenteditable',true); document.getElementById('myabig').style.border='2px dotted lime'; document.getElementById('divabig').innerHTML=document.getElementById('divabig').innerHTML.replace('a ','span ').replace('\/span','\/a'); } }, 40000);\" data-two-onload=\"setInterval(function(){ if (('' + document.getElementById('myasbig').style.display).toLowerCase().indexOf('none') != -1) { document.getElementById('myasbig').style.display='inline'; document.getElementById('myabig').style.display='none';   } else { document.getElementById('myabig').style.display='inline'; document.getElementById('myasbig').style.display='none';  } }, 40000);\"><\/iframe><\/p>\n<div id=divabig><a id=myabig onblur=\"this.href=this.innerText;\" contenteditable=false style=\"word-wrap: break-word;border:0px solid transparent;\" target=_blank title=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php#title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Population&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php#title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Populations&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]\"  target=\"_blank\">https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php#title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Populations&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]<\/a><span id=myasbig contenteditable=true onblur=\"document.getElementById('myabig').href=this.innerText; document.getElementById('myabig').innerHTML=this.innerText; document.getElementById('myabig').title=this.innerText; this.title=this.innerText;\" style=\"display:none;word-wrap: break-word;border:2px dotted lime;\"  title=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php#title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Population&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]\" target=\"_blank\" data-href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php#title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Populations&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]\"  target=\"_blank\">https:\/\/www.rjmprogramming.com.au\/PHP\/PieChart\/pie_chart.php#title=Country%20Populations&#038;onclick=y&#038;task=Country&#038;desc=Populations&#038;data=,%20[~https;China,1347000000,India,1241000000,United%20States,312000000,Indonesia,238000000,Brazil,197000000,Pakistan,177000000,Nigeria,162000000,Bangladesh,151000000,Russia,143000000,Japan,128000000,Mexico,115000000,Philippines,96000000,Vietnam,88000000,Ethiopia,87000000,Germany,81800000,Egypt,82600000,Iran,78000000,Turkey,74000000,Thailand,69500000,Congo,67800000,France,63300000,United%20Kingdom,62700000,Italy,60800000~,100]<\/span><\/div>\n<p><\/p>\n<p> &#8230; should, these days, show interesting graphical <font size=1 style=\"border:2px dotted lime;\">(and sometimes editable)<\/font> data that is <button style=display:inline-block; onclick=\"document.getElementById('myabige').href=document.getElementById('myabige').href.split('body=')[0] + 'body=' + encodeURIComponent(document.getElementById('myabig').innerText); document.getElementById('myabige').click();\">Email<\/button><font size=1><sub>able<\/sub><\/font> or <button style=display:inline-block; onclick=\"document.getElementById('myabigs').href=document.getElementById('myabigs').href.split('body=')[0] + 'body=' + encodeURIComponent(document.getElementById('myabig').innerText); document.getElementById('myabigs').click();\">SMS<\/button><font size=1><sub>able<\/sub><\/font>.<\/p>\n<p><a id=myabige target=_top style=display:none; href=\"mailto:?subject=Google%20Chart%20Pie%20Chart%20example%20via%20RJM%20Programming&#038;body=\">Email<\/a><\/p>\n<p><a id=myabigs target=_top style=display:none; href=\"sms:&#038;body=\">SMS<\/a><\/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\/new-form-target-self-primer-tutorial\/'>New Form Target Self Primer Tutorial<\/a> ...<\/p-->\n<hr>\n<p id='ftspt'>Previous relevant <a target=_blank title='Form Target Self Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/form-target-self-primer-tutorial\/'>Form Target Self 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\/HTMLCSS\/window_self_use.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Form Target Self Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/window_self_use.jpg\" title=\"Form Target Self Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Form Target Self Primer Tutorial<\/p><\/div>\n<p>We&#8217;ve rarely used the &#8230;<\/p>\n<ul>\n<li>form<\/li>\n<li>method=POST<\/li>\n<li>action=[URLofInterestOfPHP]<\/li>\n<li>target=_self <font size=1>(<a target=_blank title='HTML form target attribute information from W3schools' href='https:\/\/www.w3schools.com\/tags\/att_form_target.asp#:~:text=Definition%20and%20Usage,window%2C%20or%20inline%20frame).'>versus any &#8220;_blank&#8221; (we&#8217;d have used most often in the past) or &#8220;_parent&#8221; or &#8220;_top&#8221; or &#8220;framename&#8221; (of iframe) alternative target value ideas<\/a>)<\/font><\/li>\n<\/ul>\n<p> &#8230; style of arrangement in the past, but we&#8217;ve found it useful recently (a couple of times) because we find we want to, more and more, use &#8230;<\/p>\n<ul>\n<li>hashtagged data<\/li>\n<li>reassembled into a &#8230;\n<ol>\n<li>form<\/li>\n<li>method=POST<\/li>\n<li>action=[URLofInterestOfPHP]<\/li>\n<li>target=_self<\/li>\n<\/ol>\n<p> &#8230; arrangement &#8230;\n<\/li>\n<\/ul>\n<p> &#8230; that way keeping any window.parent and window.self and\/or window.opener and window.self connections intact, and at the same time, being able to involve very long (mostly hashtagged data) URLs in the arrangements.<\/p>\n<p>Let&#8217;s show you an example.  In the recently talked about <a target=_blank href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.'>Google Charts<\/a> <a target=_blank title='Google Charts Image Chart' href='https:\/\/developers.google.com\/chart\/image\/docs\/gallery\/chart_gall'>Image Chart<\/a> Map Chart <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/GeoChart\/image_chart.php\">inhouse interfacer<\/a> called image_chart.php downaways into the code <font color=blue>it now goes<\/font> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n$screenheight='0';<br \/>\n&lt;br&gt;<br \/>\n\/\/ ;Continent;CC1|CC2|:blLAT,blLONG,trLAT,trLONG:width,height:scblX,scblY,sctrX,sctrY<br \/>\n$continfo=';Europe;IS|CY|:35.16666,-27.6,67.0,33.36666:468,450:422,560,890,140';  \/\/ 53 523<br \/>\n$continfo.=';Australia;AU|AU|:-44,113.65,-10.26667,161.28333:600,450:422,560,866,140';<br \/>\n$continfo.=';Asia;FI|WS|:-14,37,81,179.9:600,450:422,560,866,140';<br \/>\n$continfo.=';America;GS|US|:-56,-179.9,77,-35:600,450:422,560,866,140';<br \/>\n$continfo.=';Africa;TF||:-35,-17,37,52:600,450:422,560,890,140';<br \/>\nif (isset($_GET['screenheight'])) {<br \/>\n    $screenheight=str_replace('+',' ',urldecode($_GET['screenheight']));<br \/>\n}<br \/>\nif (isset($_POST['screenheight'])) {<br \/>\n    $screenheight=str_replace('+',' ',urldecode($_POST['screenheight']));<br \/>\n}<br \/>\n&lt;br&gt;<br \/>\nif (isset($_GET['nothing'])) {<br \/>\n  exit;<br \/>\n<font color=blue>} else if ($screenheight != '0' && !isset($_GET['returnxytoparent']) && (!isset($_POST['returnxytoparent']) && !isset($_POST['ix']))) {<br \/>\n  echo \"&lt;html&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;script type=text\/javascript&gt;<br \/>\n  function tryit() {<br \/>\n    if (('' + location.hash).indexOf('returnxytoparent=') != -1) {<br \/>\n      document.getElementById('returnxytoparent').value=decodeURIComponent(('' + location.hash).split('returnxytoparent=')[1].split('&')[0].split('#'));<br \/>\n      document.getElementById('submy').click();<br \/>\n    }<br \/>\n  }<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body onload=tryit();&gt;<br \/>\n&lt;form style=display:none; <i>target=_self<\/i> action=\/PHP\/GeoChart\/image_chart.php method=POST&gt;<br \/>\n&lt;input type=hidden name=returnxytoparent id=returnxytoparent value=\\\"\\\"&gt;&lt;\/input&gt;<br \/>\n&lt;input type=hidden name=screenheight value=\" . $screenheight . \"&gt;&lt;\/input&gt;<br \/>\n&lt;input type=submit style=display:none; value=Submit id=submy&gt;&lt;\/input&gt;<br \/>\n&lt;\/form&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;\";<br \/>\n  exit;<\/font><br \/>\n} else if (isset($_GET['returnxytoparent']) || (isset($_POST['returnxytoparent']) && !isset($_POST['ix']))) {<br \/>\n\/\/ more code to do with real returnxytoparent data follows<br \/>\n}<br \/>\n\/\/ more code follows<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; called from our inhouse <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/regions_via_countries.html\">Region Picker<\/a> <font color=blue>in this way now<\/font> <font size=1>(where inhouse Javascript function windowdotdotopen can be thought of as window.open for these purposes)<\/font> &#8230;<\/p>\n<p><code><br \/>\n  <font color=blue>if (eval('' + encodeURIComponent(theurlis).length) > 750) {<br \/>\n  dbwo=windowdotdotopen('\/\/www.rjmprogramming.com.au\/PHP\/GeoChart\/image_chart.php' + '?screenheight=' + screen.height + '#returnxytoparent=' + encodeURIComponent(theurlis),'_blank','top=' + eval(-300 + screen.height) + ',left=450,width=600,height=300');<br \/>\n  } else {<\/font><br \/>\n  dbwo=windowdotdotopen('\/\/www.rjmprogramming.com.au\/PHP\/GeoChart\/image_chart.php?returnxytoparent=' + encodeURIComponent(theurlis) + '&screenheight=' + screen.height,'_blank','top=' + eval(-300 + screen.height) + ',left=450,width=600,height=300');<br \/>\n  <font color=blue>}<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; setting up a two way understanding between window.opener Region Picker and window.self Google Charts Image Chart Map Chart inhouse interfacer.  Using that <font color=blue><i>target=_self<\/i><\/font> arrangement above allows &#8230;<\/p>\n<ul>\n<li>despite the <a target=_blank title=? href='https:\/\/www.youtube.com\/watch?v=KLOyChP2AWA'>&#8220;double dipping&#8221;<\/a> transfer of hashtagged URL data (when longer than 750 characters, <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg'>that is<\/a>) into method=POST form data (of considerable size) &#8230;<\/li>\n<li>that <i>understanding between window.open Region Picker and window.self Google Charts Image Chart Map Chart inhouse interfacer<\/i> remains intact<\/li>\n<\/ul>\n<p>Yayyyyyy!<\/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='#d64092' onclick='var dv=document.getElementById(\"d64092\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/form\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d64092' 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='#d64121' onclick='var dv=document.getElementById(\"d64121\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hashtag\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d64121' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The work of Form Target Self Primer Tutorial got us thinking &#8230; Could it be applied to our inhouse Google Charts PHP web applications? And if so, is the work generic enough to just be applied to our gchartgen.js external &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/google-charts-totally-hashtagging-communication-conduits-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":[3028,212,1709,4824,3136,2170,380,409,452,2537,1533,519,2229,557,4825,3961,576,1577,652,2169,4826,739,1830,3220,830,932,944,970,997,4610,1122,1159,3565,2005,1319],"class_list":["post-64121","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-action","tag-client","tag-communication","tag-communication-conduit","tag-conduit","tag-document-url","tag-email","tag-external-javascript","tag-form","tag-generic","tag-get","tag-google-charts","tag-hash","tag-hashtag","tag-hashtagged","tag-hashtagging","tag-html","tag-interface","tag-javascript","tag-location-hash","tag-location-href","tag-mailto","tag-method","tag-navigate","tag-navigation","tag-php","tag-pie-chart","tag-post","tag-programming","tag-self","tag-server","tag-sms","tag-target","tag-tool","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/64121"}],"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=64121"}],"version-history":[{"count":46,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/64121\/revisions"}],"predecessor-version":[{"id":64172,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/64121\/revisions\/64172"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=64121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=64121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=64121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}