Scott Scott - 1 year ago 204
jQuery Question

jQuery .click() works on every browser but Safari

I have a piece of JavaScript that dynamically creates an

tag inside of an existing div and then calls the jQuery function "click" on it. This works as intended in all browsers except Safari.

Safari returns the following error:

'undefined' is not a function (evaluating '$('.shell a')[0].click()')

Any ideas on what I'm doing wrong or why this doesn't work in Safari and how to get it to work (or one piece of code that works in all browsers) I've tried using
as well and it gives the same error.


function writeAndClickLink(url) {

$('.shell').html('<a href="' + url + '"></a>');
$('.shell a')[0].click();

and in the HTML:

<div class="shell"></div>

The reason I'm doing it this weird way is the function is called from a Flash site to open a twitter window where I am giving a reward for tweeting. This so far has been the only way I could get the "tweet" event to bind to the window. If I open the window any other way ( for example) it doesn't capture the bound event that lets me know they actually completed the tweet.

The flow is something like:

  • User clicks tweet button in flash

  • Flash calls javascript function to dynamically write href and "click" it

  • Twitter window opens

  • User successfully tweets

  • Tweet event is captured and updates flash with success

  • Content is unlocked in flash

Answer Source
var a = $('.shell a')[0];
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window);

See (search for "Manually firing events").