Running an External Script on Page Load
One way an external script can be run on page load is with a non-display image tag. PHP, Perl CGI, or other external software can be launched.
The trigger is with JavaScript. The image code itself is JavaScript.
I tend to use this type of code to avoid bots, generally for launching a page-load counting PHP script after the page has loaded. The script counts only page loads of real browsers that hang around long enough for the page to load.
-
Robots are unlikely to run JavaScript; therefore, they don't get counted. Those that do follow JavaScript tend to be maintained by major search engines, which can be filtered out of counts.
-
People who don't hang around long enough for the page to load don't get counted.
The result is a count of real people who have visited the page.
This article contains the code for that implementation. You may, of course, replace the PHP script with different software, a script that does what you want done when a web page completes loading — an IP address log to determine geographical distribution of site visitors, or updating a central database for determining which web pages are the most popular or time of day the site is visited most, are examples; any script that can be run afterward so it does not slow down the initial page load.
The Logging Script
The logging script is a PHP script external to the web page. It can be installed anywhere on the website.
Here is the source code. A customization is addressed following the source code.
<?php
/* Log Page Load
Version 1.0
Will Bontrager Software LLC
https://www.willmaster.com/
*/
if( empty($_GET['url']) ) { exit; } // If parameter "url" is missing or empty, script was incorrectly launched.
$LogFile = "{$_SERVER['DOCUMENT_ROOT']}/logfile.txt";
$Log = array();
$Log[] = date('r');
$Log[] = $_GET['url'];
$Log[] = $_SERVER['HTTP_USER_AGENT'];
file_put_contents($LogFile,implode("\t",$Log)."\n",FILE_APPEND);
exit;
?>
Replace {$_SERVER['DOCUMENT_ROOT']}/logfile.txt
with the location where you want the log file to be maintained.
Save the script as LogMe.php
or some other PHP file name that you prefer.
Upload LogMe.php
to your server and make a note of its URL.
The Web Page
The web page has a JavaScript function and an independent JavaScript command.
Let's start with the JavaScript function that launches the external logging script.
<script>
function LaunchScript()
{
var holder = new Image();
holder.src = "/LogMe.php?url="+document.URL;
}
</script>
The LaunchScript()
function creates a new variable to hold an image. Then it loads the image — which is the script you are launching. The "image" is never displayed.
Replace /LogMe.php
with the URL of the script you are launching. It may be a relative URL or an absolute https://...
URL.
Now, here is the independent JavaScript command.
<script> document.addEventListener("DOMContentLoaded", function() { LaunchScript(); }, false); </script>
There is no customization there.
Both the JavaScript function and the independent JavaScript command can be inserted into your web page source code wherever JavaScript can run. Immediately above the closing </body>
tag is fine.
As an FYI, the Javascript function and command can be in the same script
tag. As:
<script>
function LaunchScript()
{
var holder = new Image();
holder.src = "/LogMe.php?url="+document.URL;
}
document.addEventListener("DOMContentLoaded", function() { LaunchScript(); }, false);
</script>
You are good to go. Test it, of course to ensure the JavaScript runs as it is supposed to and the external script runs without errors.
As noted, the external script may be any script you want to run when the page finishes loading.
(This article first appeared with an issue of the Possibilities newsletter.)
Will Bontrager