#Start use WWW::Mechanize::FireFox #URL $url = 'http://host/url/site'; #New instance my $mech = WWW::Mechanize::FireFox->new(); #Exitkode my $EXITCODE = 0; #Get content of URL $mech->get($url); $str = 'javascript:InstallPrinter()'; eval_in_page_with_redefined_alert($mech,$str, sub { print "Caught alert(): @_" }); #$eval_in_page=>('javascript:InstallPrinter()'); #$mech->get('javascript:InstallPrinter()'); sub eval_in_page_with_redefined_alert { my ($self,$str,$redefined_alert) = @_; my $eval_in_sandbox = $self->repl->declare(<<'JS'); function (w,str,myalert) { var unsafeWin = w.wrappedJSObject; var safeWin = XPCNativeWrapper(unsafeWin); var sandbox = Components.utils.Sandbox(safeWin); sandbox.window = safeWin; sandbox.window.alert = myalert; // <-- sandbox.alert = myalert; // <-- sandbox.document = sandbox.window.document; sandbox.__proto__ = unsafeWin; var res = Components.utils.evalInSandbox(str, sandbox); return [res,typeof(res)]; }; JS my $window = $self->tab->{linkedBrowser}->{contentWindow}; my $uri = $self->uri; return @{ $eval_in_sandbox->("$uri",$window,$redefined_alert ) }; };