PDA

View Full Version : site validation problems


swissbeets
07-16-2008, 07:24 PM
i have just got my site live and it being my first still needs a lot of work, but i wanted to put a basic working site up. I am at the point now that i would like to make my site searchable on google. but first i would like to validate it. i have gone to the

http://validator.w3.org/

and am getting a lot of errors specifically in the Javascript that dreamweaver wrote for my rollover images in my navigation bar. (about 50) i have heard that this code is not the best way to do it but i do not want to take the time to fix something that is already working unless it is absolutely the cause of my problems

has anyone else come into problems with their javascript as the validated their site?

Cary
07-16-2008, 11:55 PM
Not really sure what javascript DW has inserted in your page, but let's suppose you have something like this:


<script type="text/javascript">
<!--
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_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_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_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>

Cut all of that out and past it into a blank page which you can save as dw.js or something like that. Remove the script and comment tags at the beginning and end so all you have left in your new .js file is this:

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_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_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_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];}
}

Then in your html you replace the original javascript code you just moved to an external file with this:

<script src="dw.js" type="text/javascript"></script>

Make sure you have the correct file name and path. In the example above, dw.js is in the same folder as the html page.

swissbeets
07-17-2008, 12:09 AM
<script type="text/javascript">
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_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_nbGroup(event, grpName) { //v6.0
var i,img,nbArr,args=MM_nbGroup.arguments;
if (event == "init" && args.length > 2) {
if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
nbArr[nbArr.length] = img;
for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = img.MM_dn = args[i+1];
nbArr[nbArr.length] = img;
} }
} else if (event == "over") {
document.MM_nbOver = nbArr = new Array();
for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
nbArr[nbArr.length] = img;
}
} else if (event == "out" ) {
for (i=0; i < document.MM_nbOver.length; i++) {
img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
} else if (event == "down") {
nbArr = document[grpName];
if (nbArr)
for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
document[grpName] = nbArr = new Array();
for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
nbArr[nbArr.length] = img;
} }
}
</script>


this is my code and i saved it as functions.js

then i originally had it in my header.php because the header is on every page just like i need the javascript for my navigation.......

here is the code there (they are both located in the includes/ folder

<html>
<head>
<title> Big Pecker's Stuff.com
</title>
<link href="stylesheets/public.css" media="all" rel="stylesheet" type="text/css" />
<script src="includes/functions.js" type="text/javascript"></script>
<meta name="description" content=" The place to get all of your Big Pecker's Merchandise!">
<meta name="keywords" content=" Bigpeckers, big peckers, bigpecker, big pecker, surf wax, big wax, surfwax, Big peckers surfwax">
<meta name="verify-v1" content="EqMuWWdeHiXrDpHoJ1r0r7tbJe9pbWjEHqOxr/We16Y=" />
</head>
<body>
<div id="header">
<h1> </h1>
</div>
<div id="main">


but it is not working for me, the javascript is no longer being used and i dont get a rollover image

any ideas?

Cary
07-17-2008, 02:31 AM
If the includes folder is in the root folder of your site, then you can try adding a slash to the beginning of the path to make it root-relative, like this:

<script src="/includes/functions.js" type="text/javascript"></script>

Then all html pages will look for the includes folder in the root folder and then find the js file. The way you currently have it, pages will only see the js file if they are located in the includes folder. I suspect you have them elsewhere.

swissbeets
07-17-2008, 06:42 PM
when i add <?php require_once("includes/functions.js"); ?>

it works but i still dont think i will be able to validate it, how important is validating a site?

Cary
07-18-2008, 01:47 PM
Just to be sure it's not just the way you pasted the code here, but make sure your function.js file's javascript code does not begin and end with the opening and closing script tags since those are html and do not belong within a javascript file.

If the tags were there, try the previously suggested method again after removing the script tags. Using php to include the javascript doesn't gain anything. You would be just as well off using your original include file which already contained the javascript.

Validating a site is important because it means browsers won't have to guess how to handle bad code because there won't be any. Different browsers make different adjustments for bad code, so the page may look good in one browser, but horrible in another.

Because you can't test your pages in browsers that don't yet exist, you can be fairly confident your pages will render correctly in future browsers only if there are no mistakes for those browsers to deal with.