Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 6 of 6
  1. #1
    Senior Coder
    Join Date
    Jul 2003
    Location
    My pimped-out igloo in Canadia
    Posts
    1,966
    Thanks
    36
    Thanked 0 Times in 0 Posts

    Slight modification to e-mail concealer script

    Bah, it's raining hard

    Hi all

    I'm using a neat little script that prevents harvesters from gathering e-mail addresses but I need it to do something slightly different.

    the script is here:
    http://www.javascriptkit.com/script/...pamemail.shtml

    What I like about it is that I can create a whole array of e-mail addresses within the script and display them as I wish using
    Code:
    <script>displaycontact(contacts[0], "emails", "text", "")</script>
    and the array looks like this:
    Code:
    // Anti-Spam Email Displayer- By JavaScriptKit.com
    // Visit JavaScript Kit (http://javascriptkit.com) for this script and more.
    // This notice must stay intact for use
    
    var contacts=new Array()
    //Specify text and corresponding email address.
    //Use [at] and [dot] in place of "@" and "." for anti spam purpose:
    contacts[0]=["Chris Timber", "chris[at]whatever[dot]com"]
    contacts[1]=["John Doe", "johndoe[at]whatever2[dot]com"]
    contacts[2]=["Jannet Low", "janet[at]whatever3[dot]com"]
    contacts[3]=["Albert Good", "albertgood[at]whatever4[dot]com"]
    
    
    //Specify caption text to display within SELECT menu. Only applicable if you're using the form option:
    var dropmenucaption="CONTACT US FORM "
    
    function displaycontact(emailarray, cssclass, displaymethod, extrainfo){
    if (displaymethod=="text"){
    document.write('<span class="' + cssclass + '">\n')
    if (typeof emailarray[0]=="object"){ //if array passed consists of multiple elements
    for (i=0; i<emailarray.length; i++){
    var seperator=(i<emailarray.length-1)? extrainfo : ""
    document.write('<a href="mailto:' + modifyemail(emailarray[i][1])+ '">'+ emailarray[i][0] + '</a>' + seperator)
    }
    }
    else //else if it is a single array element
    document.write('<a href="mailto:' + modifyemail(emailarray[1])+ '">'+ emailarray[0] + '</a>')
    document.write('</span>')
    }
    else if (displaymethod=="form"){
    document.write('<form>\n')
    document.write('<select size="' + extrainfo + '" onChange="jumptooption(this)" class="' + cssclass + '">\n')
    document.write('<option value="caption">' + dropmenucaption + '</option>\n')
    for (i=0; i<emailarray.length; i++)
    document.write('<option value="mailto:' + modifyemail(emailarray[i][1]) +'">' + emailarray[i][0] + ' </option>\n')
    document.write('</select></form>\n')
    }
    }
    
    function modifyemail(emailitem){
    var modified=emailitem.replace(/\[aux]/gi, "@")
    modified=modified.replace(/\[point]/gi, ".")
    return modified
    }
    
    function jumptooption(themenu){
    if (themenu.options[themenu.selectedIndex].value !="caption")
    location=themenu.options[themenu.selectedIndex].value
    }
    
    //USAGE INSTRUCTION. displaycontact(1st paramter, "2nd paramter", "3rd paramter", "4th paramter")
    //1st parameter: Input the name of the array containing the list of email addresses. To display one single email, input the corresponding array element. 
    //2nd parameter: Input the CSS Classname that is to be applied. Enter arbitrary name for none.
    //3rd parameter: Input either "form" or "text." Former will display email in drop down menu. Later in plain text. Only "text" mode supports displaying of single email address!
    //4th parameter: If in "form" mode, enter an integer to control the height of the <SELECT> tag. If "text" mode, enter any string to act as a divider between each email text. For example "|", "<br>" etc.
    
    //SAMPLE USAGES (uncomment below to see)
    //displaycontact(contacts, "textstyle", "text", " | ")
    
    //displaycontact(contacts, "formstyle", "form", "1")
    
    //displaycontact(contacts[2], "textstyle", "text", "")
    ... what I need to change is that, for my current application, i need to display the user's e-mail address itself, such as
    Code:
    [B]var contacts=new Array()
    //Specify text and corresponding email address.
    //Use [at] and [dot] in place of "@" and "." for anti spam purpose:
    contacts[0]=["chris[at]whatever[dot]com", "chris[at]whatever[dot]com"]
    contacts[1]=["johndoe[at]whatever2[dot]com", "johndoe[at]whatever2[dot]com"]
    but doing so does not convert the [at] or [dot] to the @ or . symbol like it does in the second part of the array, which is what i need

    Can anyone help me make that change (preferably keeping intact the original functionality so i can use the script in both situations in the future)

    I envisioned something like
    Code:
    <script>displayNameAndEmail(contacts[0], "emails", "text", "")</script>
    for what it does now
    
    and
    <script>displayEmail(contacts[0], "emails", "text", "")</script>  
    for displaying only the e-mail when the link you want viewable isn't the persons name but the e-mail address itself (while maintaining the anti-harvester spirit :p:D
    Last edited by canadianjameson; 08-23-2007 at 11:47 PM.
    Before you criticize someone, you should walk a mile in their shoes. That way, when you criticize them, you're a mile away and you have their shoes :)

  • #2
    Senior Coder
    Join Date
    Mar 2005
    Location
    Portsmouth UK
    Posts
    4,502
    Thanks
    3
    Thanked 500 Times in 487 Posts
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
    
    <head>
      <title></title>
    </head>
    
    <body>
    <script language="JavaScript" type="text/javascript">
    <!--
    // Anti-Spam Email Displayer- By JavaScriptKit.com
    // Visit JavaScript Kit (http://javascriptkit.com) for this script and more.
    // This notice must stay intact for use
    
    var contacts=new Array()
    //Specify text and corresponding email address.
    //Use [at] and [dot] in place of "@" and "." for anti spam purpose:
    contacts[0]=["Chris Timber", "chris[at]whatever[dot]com"]
    contacts[1]=["John Doe", "johndoe[at]whatever2[dot]com"]
    contacts[2]=["Jannet Low", "janet[at]whatever3[dot]com"]
    contacts[3]=["Albert Good", "albertgood[at]whatever4[dot]com"]
    
    
    //Specify caption text to display within SELECT menu. Only applicable if you're using the form option:
    var dropmenucaption="CONTACT US FORM "
    
    function displaycontact(emailarray, cssclass, displaymethod, extrainfo){
    if (displaymethod=="text"){
    document.write('<span class="' + cssclass + '">\n')
    if (typeof emailarray[0]=="object"){ //if array passed consists of multiple elements
    for (i=0; i<emailarray.length; i++){
    var seperator=(i<emailarray.length-1)? extrainfo : ""
    document.write('<a href="mailto:' + modifyemail(emailarray[i][1])+ '">'+ modifyemail(emailarray[i][1]) + '</a>' + seperator)
    }
    }
    else //else if it is a single array element
    document.write('<a href="mailto:' + modifyemail(emailarray[1])+ '">'+ emailarray[1].replace('[at]','@').replace('[dot]','.') + '</a>')
    document.write('</span>')
    }
    else if (displaymethod=="form"){
    document.write('<form>\n')
    document.write('<select size="' + extrainfo + '" onChange="jumptooption(this)" class="' + cssclass + '">\n')
    document.write('<option value="caption">' + dropmenucaption + '</option>\n')
    for (i=0; i<emailarray.length; i++)
    document.write('<option value="mailto:' + modifyemail(emailarray[i][1]) +'">' + emailarray[i][0] + ' </option>\n')
    document.write('</select></form>\n')
    }
    }
    
    function modifyemail(emailitem){
    var modified=emailitem.replace(/\[aux]/gi, "@")
    modified=modified.replace(/\[point]/gi, ".")
    return modified
    }
    
    function jumptooption(themenu){
    if (themenu.options[themenu.selectedIndex].value !="caption")
    location=themenu.options[themenu.selectedIndex].value
    }
    
    //USAGE INSTRUCTION. displaycontact(1st paramter, "2nd paramter", "3rd paramter", "4th paramter")
    //1st parameter: Input the name of the array containing the list of email addresses. To display one single email, input the corresponding array element.
    //2nd parameter: Input the CSS Classname that is to be applied. Enter arbitrary name for none.
    //3rd parameter: Input either "form" or "text." Former will display email in drop down menu. Later in plain text. Only "text" mode supports displaying of single email address!
    //4th parameter: If in "form" mode, enter an integer to control the height of the <SELECT> tag. If "text" mode, enter any string to act as a divider between each email text. For example "|", "<br>" etc.
    
    //SAMPLE USAGES (uncomment below to see)
    //displaycontact(contacts, "textstyle", "text", " | ")
    
    //displaycontact(contacts, "formstyle", "form", "1")
    
    displaycontact(contacts[2], "textstyle", "text", "")
    //-->
    </script>
    </body>
    
    </html>
    Vic

    God Loves You and will never love you less.

    http://www.vicsjavascripts.org/Home.htm

    If my post has been useful please donate to http://www.operationsmile.org.uk/

  • Users who have thanked vwphillips for this post:

    canadianjameson (08-24-2007)

  • #3
    Senior Coder
    Join Date
    Jul 2003
    Location
    My pimped-out igloo in Canadia
    Posts
    1,966
    Thanks
    36
    Thanked 0 Times in 0 Posts
    absolutely fantastic

    Thank you Vic
    Before you criticize someone, you should walk a mile in their shoes. That way, when you criticize them, you're a mile away and you have their shoes :)

  • #4
    Senior Coder
    Join Date
    Jul 2003
    Location
    My pimped-out igloo in Canadia
    Posts
    1,966
    Thanks
    36
    Thanked 0 Times in 0 Posts
    Actually Vic I do get one error, although it displays properly

    Line 29 i get "emailarray has no properties" when using firebug, and 'undefined is a null or not an object' in IE

    is it possible that the variable hasn't been created yet when it's called?
    Before you criticize someone, you should walk a mile in their shoes. That way, when you criticize them, you're a mile away and you have their shoes :)

  • #5
    Senior Coder
    Join Date
    Mar 2005
    Location
    Portsmouth UK
    Posts
    4,502
    Thanks
    3
    Thanked 500 Times in 487 Posts
    I only changed this line
    Code:
    ('<a href="mailto:' + modifyemail(emailarray[1])+ '">'+ emailarray[1].replace('[at]','@').replace('[dot]','.') + '</a>')
    document.write
    and I'm not sure that it offers the same protection

    also as its using the depreciated doc.write

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
    
    <head>
      <title></title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var Contacts=new Array()
    //Specify text and corresponding email address.
    //Use [at] and [dot] in place of "@" and "." for anti spam purpose:
    Contacts[0]=['Chris Timber', 'chris[at]whatever[dot]com']
    Contacts[1]=['John Doe', 'johndoe[at]whatever2[dot]com']
    Contacts[2]=['Jannet Low', 'janet[at]whatever3[dot]com']
    Contacts[3]=['Albert Good', 'albertgood[at]whatever4[dot]com']
    
    
    function zxcConvertEmail(zxctag,zxcary,zxccngtxt){
     var zxctags=document.getElementsByTagName(zxctag);
     for (var zxc0=0;zxc0<zxctags.length;zxc0++){
      for (var zxc0a=0;zxc0a<zxcary.length;zxc0a++){
       if (zxctag.toUpperCase()=='A'&&zxctags[zxc0].href){
        var zxchref=decodeURI(zxctags[zxc0].href);
        if (zxchref.match(zxcary[zxc0a][0])){
         var zxcaddress=zxcary[zxc0a][1].replace('[at]','@').replace('[dot]','.');
         zxctags[zxc0].href='mailto:'+zxcaddress;
         if (zxccngtxt) zxctags[zxc0].innerHTML=zxctags[zxc0].innerHTML.replace(zxcary[zxc0a][0],zxcaddress);
        }
       }
      }
     }
    }
    
    //-->
    </script>
    
    </head>
    
    <body onload="zxcConvertEmail('A',Contacts,true);">
    <a ></a>
    <a href="mailto:Chris Timber" >Chris Timber</a>
    
    </body>
    
    </html>
    again I'm not sure that it offers the same protection
    Vic

    God Loves You and will never love you less.

    http://www.vicsjavascripts.org/Home.htm

    If my post has been useful please donate to http://www.operationsmile.org.uk/

  • #6
    Senior Coder
    Join Date
    Jul 2003
    Location
    My pimped-out igloo in Canadia
    Posts
    1,966
    Thanks
    36
    Thanked 0 Times in 0 Posts
    I responded in the other thread as requested
    Before you criticize someone, you should walk a mile in their shoes. That way, when you criticize them, you're a mile away and you have their shoes :)


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •