PDA

View Full Version : WC3 markup validation service problem



JimB
11-07-2009, 12:36 AM
1) Script Title: jQuery Scroll to Top Control v1.1

2) Script URL (on DD): http://www.dynamicdrive.com/dynamicindex3/scrolltop.htm

3) Describe problem:
This script for the HTML page thows up a WC3 validation service error at the line with the i<=( The < character gives the error. The script works fine as it is but I would have liked to pass the WC3 Markup Validation Service test at http://validator.w3.org/


<script type="text/javascript">

/***********************************************
* Easy Email Scrambler script- Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var maildivider="[at]" //enter divider you use to divide your email address strings

for (i=0; i<=(document.links.length-1); i++){
if (document.links[i].href.indexOf(maildivider)!=-1)
document.links[i].href=document.links[i].href.split(maildivider)[0]+"@"+document.links[i].href.split(maildivider)[1]
}


</script>

jscheuer1
11-07-2009, 01:39 AM
I've moved this post to the general help area, as failure to pass validation is not a bug. It's just an inconvenience for those who insist upon a 100% pass of the validator, which itself is only a script - therefore not always correct. Even when it is correct, this is more a reflection upon how you have chosen to organize your code (perhaps encouraged by demo page instructions, or not), than upon the efficacy of the script in question.

Which brings me to my next question. What script?

You link to the DD script, jQuery Scroll to Top Control v1.1, but in your post you show code that doesn't relate to that script:



<script type="text/javascript">

/***********************************************
* Easy Email Scrambler script- Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var maildivider="[at]" //enter divider you use to divide your email address strings

for (i=0; i<=(document.links.length-1); i++){
if (document.links[i].href.indexOf(maildivider)!=-1)
document.links[i].href=document.links[i].href.split(maildivider)[0]+"@"+document.links[i].href.split(maildivider)[1]
}


</script>

In any case, the above quoted code is not particularly well written javascript, but that has nothing to do with validation errors. As long as it works, I'm not going to worry about that right now, especially since your main concern appears to be validation.

The best way to validate a page with javascript on it is to make the script external. Here's my stuff on that:

Use a text editor to save the script, call it 'file_name.js' where 'file_name' can be any valid file name of your choosing. Substitute the name of your external .js file for some.js in the below:


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

Common problems arise when:

1 ) The script file is not in the directory specified. In the above example it must be in the same directory as the page(s) that use it. Below, it can be in the scripts directory off of the root of a domain:


<script src="http://www.somedomain.com/scripts/some.js" type="text/javascript"></script>

2 ) Opening, closing and/or 'hiding' tags are left in the external file. This means that you must strip:
<script>
<!--and
//-->
</script>and any of their many variations from the beginning and end of the external file.

3 ) The external call (<script src="some.js" type="text/javascript"></script>) is not inserted into the page at the correct spot. The external call must be inserted at the same place on the page where the script was/would have been.

4 ) Paths to other files (if) used by the script are no longer valid due to its location. This is only a problem if the external script is kept in a different directory than the page it was working on when it was an internal script. To correct this, use absolute paths inside the script. Absolute path examples:


http://www.somedomain.com/images/button.gif

http://www.somedomain.com/~mysitename/index.html

5 ) Inappropriately combining two or more scripts into one external file. Usually external scripts can be combined if one knows enough about scripting to do so properly. Even then it is possible to overlook something.

A rule of thumb when testing is, if it won't work on the page, it won't work as an external file either.

One other thing, if this is a DD script or any script that requires the credit remain for legal use, include the credit in the on page call, ex (see usage terms (http://www.dynamicdrive.com/notice.htm) for more info on this, especially item 4 from the terms):


<script src="some.js" type="text/javascript">
/***********************************************
* IFrame SSI script II- Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
* Visit DynamicDrive.com for hundreds of original DHTML scripts
* This notice must stay intact for legal use
***********************************************/
</script>

Make sure to retain all the 'decorations', as these include begin and end javascript comment delimiters, without which the script won't function.

There is also info here:

http://www.javascriptkit.com/javatutors/external.shtml

JimB
11-07-2009, 10:32 AM
Sorry, I listed the wrong Dynamic Drive reference page for the script mentioned. I have several Dynamic Drive scripts in my web page and I picked the wrong reference, sorry for the confusion.

I was lying in bed thinking about it and realised that there probably was not an error after all as the script works fine. And thought about moving outside as file as you just mentioned. This would mean that the WC3 validation would not see it at all.

Sorry to bother you. Keep up the good work.

Jim