Dreamweaver MM_ Behaviors
server side 1999 still worksFour functions with a vendor prefix, pasted into the head of a very large number of pages.
In 2026: They still work: it is ordinary JavaScript. MM_findObj carries the whole browser history of the period in one function, checking document.layers, document.all and document.getElementById in turn, plus a branch for finding things inside frames.
Where it came from: Macromedia Dreamweaver 3 and 4 behaviors, 1999 and 2000. Wikipedia ↗
<script language="JavaScript">
function MM_findObj(n, d) { //v4.01
var p, i, x;
if (!d) d = document;
if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
}
if (!(x = d[n]) && d.all) x = d.all[n];
for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
for (i = 0; !x && d.layers && i < d.layers.length; i++)
x = MM_findObj(n, d.layers[i].document);
if (!x && d.getElementById) x = d.getElementById(n);
return x;
}
function MM_preloadImages() { //v3.0
var d = document;
if (d.images) {
if (!d.MM_p) d.MM_p = new Array();
var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
for (i = 0; i < a.length; i++)
if (a[i].indexOf("#") != 0) { d.MM_p[j] = new Image; d.MM_p[j++].src = a[i]; }
}
}
function MM_swapImgRestore() { //v3.0
var i, x, a = document.MM_sr;
for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}
function MM_swapImage() { //v3.0
var i, j = 0, x, a = MM_swapImage.arguments;
document.MM_sr = new Array;
for (i = 0; i < (a.length - 2); i += 3)
if ((x = MM_findObj(a[i])) != null) {
document.MM_sr[j++] = x;
if (!x.oSrc) x.oSrc = x.src;
x.src = a[i + 2];
}
}
</script>
<body onLoad="MM_preloadImages('https://xbawx.com/btn/assets/a6/a6123e8f5e63e584a09d69d3555770b2295cf761.gif')">
<a href="/"
onMouseOver="MM_swapImage('home','','https://xbawx.com/btn/assets/a6/a6123e8f5e63e584a09d69d3555770b2295cf761.gif',1)"
onMouseOut="MM_swapImgRestore()">
<img name="home" width="88" height="31" border="0"
src="https://xbawx.com/btn/assets/f8/f8fe94a7667d1041aee087e1c130f93c0b11462e.gif">
</a>
<p style="font:11px Verdana">Point at the button. That is four functions and about
forty lines of browser sniffing to change one image.</p>