Link to home
Start Free TrialLog in
Avatar of gardine
gardine

asked on

Loading a function when a hyperlink is clicked

Hello Everyone,

I am having problems loading a function (logs the users visit to a page) when a user clicks on a hyperlink.  Here is the code I am using:

<a href="Some URL" target="_blank" onclick="<CFOUTPUT>#traffic("This is the title of the page","This is the URL of the page")#</CFOUTPUT>">My Link</a>

I have four more identical links and a few regular links.  The problem I am having is when any link is clicked (even the regular ones) the above code executes for every link, even though it was not the one being clicked.

Any help with this would be appreciated.
Avatar of tomkinite
tomkinite

Make sure your recordset (if you're using one) is moving to new records.  For example, if "This is the title of the page" is a value from a database, it should change while in a <CFOUTPUT QUERY=""> or a <CFLOOP QUERY="">.  Check the resulted source to verify that those 2 variables are actually changing.

Your method of logging isn't very practical, though.  For those with disabled, or unavailable Javascript, this method would not work.

You are also asking the browser to execute a CF function in an OnClick event.  I would hope to assume that the resulted #traffic()# function renders another Javascript function that the browser can use.  

I think what you are trying to do is execute a CF function when a user clicks a link, but CF renders completely before Javascript, therefore impossible.  Use the onClick event to run a typical Javascript UDF such as onClick="<cfoutput>userVisit('#titleofpage#','#urlofpage#')</cfoutput>".  This will be fairly hokey and I don't recommend it.  If all of your pages are CF pages, simply use Application.cfm to track page hits.  Application.cfm is a page you put in your root directory of your application.  CF will run Application.cfm before rendering the actual pages being requested.
Ur code can better go as :

<CFQuery name="x">
select * from table
</CFQuery>

<CFOUTPUT Query="x"><!--- gets u the links in the DB - as u mentioned u have 4 in ur case --->
       <a href="#Url#" target="_blank" onclick="#traffic('#Title#','#Url#')#">#LinkName#</a>
</CFOUTPUT>

& that shld be it !
Hi,

you are using #'s around the function name, do you want to call a CF function? You can't do that without sending the page back to the server. The CF function is executed server side, but, the click is executed by the user, client side. You can only call a function of a client side language, like JS for example.

HTH,

Chris
Avatar of gardine

ASKER

Thank you everyone for your advice.  I dont think I was specific enough.  I created the above function to create a log when a user visits a specific page (I do not want to track all of them).  So, for every page I would like to track I place the fonction in it.  This leads me to my problem.  When I link to a pdf file and open it in a new window I am unable to load my function.
Wusage (www.boutell.com)

That's the high road.
Avatar of gardine

ASKER

High Road?
ASKER CERTIFIED SOLUTION
Avatar of tomkinite
tomkinite

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of gardine

ASKER

Thank You.  I took the idea and created my own solution.