You can pretty easily monitor mouse activity with something like - http://www.labsmedia.com/clickheat/index.html
But how would one monitor the keyboard activity of keyboard only users? I'd like to learn more how keyboard only users are interacting with megamenus and I'd like to know if they are able to intuitively learn a new behavior (switching between tab & arrow keys) or whether they default to a keyboard mouse solution.
Figuring out the behavior of users is tricky at the best of times, so I'm hoping someone's got some ideas for how to determine the actual usage of the users.
You could build a javascript that catches all keyboard entries, stores these entry's in an array and does an submit when you leave the page..
You can find more info about key logging on wikipedia http://en.wikipedia.org/wiki/Keystroke_logging
Form grabbing based: Form grabbing-based keyloggers log web form submissions by recording the web browsing onsubmit event functions. This records form data before it is passed over the Internet and bypasses HTTPS encryption.
Related
I have an interesting task that I'm not sure if possible. I've built an extensive web application via asp.net. Here is the task I want to attempt...
User receives an email from the system. Inside of the email is their submitted ticket information along with a hyperlink. That hyperlink will currently take them to the search page of my web application. What I'd like to do is have the hyperlink take them straight to their ticket without them having to search for it. So click link, takes them to search page, they click a radio button to search for ticket number and then submit. I'd rather they didn't have to do that but have it take them straight to their ticket. Is there a way to do this? I've searched for several days and can't seem to find what I'm looking for or maybe I'm seeing it but just don't understand it.
I have some check boxes on my website selecting which the data on the page gets filtered but the page name remains the same. I want to capture the data for visitors selecting any of the check boxes. Can you please let me know how can this be done?
Presently, I have different page name whenever the user select any of the check box. But by doing this, Page views data for that page becomes irrelevant.
For Omniture tracking, that's very possible, but you need to add a bit of javascript. You need to add an onClick event for the checkbox, and have it submit a custom link event to Adobe. They provide a function for it:
s.tl(this, 'o', 'Checkbox X Clicked');
Prior to this call, you can set props/evars if you want other tracking tied to this event. It doesn't count as a page view, though.
The Omniture implementation guide is here:
http://microsite.omniture.com/t2/help/en_US/sc/implement/oms_sc_implement.pdf... do a search for the s.tl() function. It'll explain.
Presumably, your page has JavaScript that does the filtering.
You would need to add to this JavaScript to send an AJAX request to the server every time the user makes their selection. The server will need to track the requests in a database or a file. After that, you can analyse the results.
There are many ways to send AJAX requests in JavaScript. The basics are here: http://www.w3schools.com/ajax/default.asp but there are also 3rd party libraries available.
Unfortunately there is nothing that "google-analytics' can do for you here, as far as I know.
Good luck,
DC
I need to implement some sort of data locking in a Flex application I'm developing. A user clicks a specific button to "check out" the data set, and other users must wait until they are finished before they can make edits. After a period of inactivity, the application will release the lock to someone else.
What I'm after is an easy way to determine if the user is still interacting with the application so they don't have to manually keep clicking "yes I want to continue editing". For example, I could handle all mouse clicks for the entire application and add 5 minutes to the timeout every time they click something. Are there any better options for doing something like this? Is there something built in to check for last interaction time?
Here's an answer I gave to a similar questions: Flex Web Application Timeout after a specific time...
In a nutshell, I create a timer that gets reset every time a mouse move is detected.
Hope that helps.
Do a search for the FlexEvent.IDLE event. We only used it for an AIR application, and I'm just blabbing, but I seem to remember it working much better for a AIR/WindowedApplication than a plain ol' Application.
Hope that helps.
Best of luck,
Jeremy
I am developing a page whereby users can login and demo some pieces of functionality. I only want to allow the user to demo this once per day.
A small example:
I have a web page with 3 buttons (relating to 3 different scenarios). On page load, I look up the database and check if the current logged in user has run any one of the 3 scenarios available (via an audit table). Each button is enabled/disabled based on the results. If any buttons are enabled, then they have not run that demo yet. By clicking the relative button, the demo runs a record is written into the Audit Table, and the button is disabled.
This was working ok, however, I realised that when I refresh the page (and confirm I want to re-submit the information) the demo runs again.
How can I stop this from happening? I need to only allow the user to run the demo once!
Thanks.
I would suggest that you change your form submission to use the Post/Redirect/Get pattern to avoid a resubmission if they hit refresh on the demo page.
Also, it seems like you should just be able to change the code at the point where it writes the record into the audit table to check to see if the record already exists, and if so, return a different result. I'd be pretty wary about this approach though. The "refresh" functionality of the browser isn't generally something you should be trying to prevent. What happens if a user hits "refresh" in the middle of their demo?
you can check not only on the page load to enable/disable the buttons, but on the button events, you can verify if that task has already been performed
I have an HTML wrapper that contains a Flex application, is there an Event that I can listen on, that is triggered when a user leaves the HTML wrapper either by navigation arrows or closing the browser?
Thanks.
You can also listen for Event.ACTIVATE and Event.DEACTIVATE in Flash. All EventDispatchers receive these events when Flash/AIR gains or loses focus from the OS.
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/EventDispatcher.html#event:deactivate
This is very helpful for when you you provide a link that opens a new window and you want to reduce functionality and load (pause and mute a video for example) and then resume when the user comes back.
Edit: I realized this may not be what you're asking for exactly, but I'll leave it in in case it's helpful for anyone looking for it. Also note that you can perform other actions in the onbeforeunload event that will generally be reliably executed before the user accesses the confirmation dialog, unless your unload routine is overly complex (in which case you should consider altering your design anyway).
onbeforeunload lets you interrupt page unload:
window.onbeforeunload = function(e) {
// Browser will pop up a confirmation dialog, with some text before
// and after your return string; try it in different browsers to
// see how they behave.
return 'String to confirm';
}
There is Body.onUnload, but i'm not sure how reliable it actually is.
The closest thing I've found for this is the javascript window.onunload event. However, you can't really listen for this within the Flex app, as the app may not be running anymore by the time the unload method is called. We've used it to signal to other parts of the page via javascript that the app was unloaded though, so depending on what you need to do that might be enough.
The question is, what do you need to do when the user navigates away?
If you need to perform an action on your server, then the best way to handle this is to open a Socket() when your swf initializes, and then when the user navigates away, that socket will be terminated, and the server can detect that and perform additional logic.
If you need to perform a client side operation, like saving a SharedObject, then you can't rely on a "just one last thing" event to the plugin, since there are alot of avenues to closing out a plugin session. In that case, your best bet is to continually be saving SharedObjects every few seconds.