script link into javascript internet-explorer firefox

into - link rel javascript



Emular haciendo clic en un enlace con Javascript que funciona con IE (5)

Creo que todavía necesita llamar a document.createEventObject; solo verificó que esté allí. El código no probado sigue, pero basado en los docs debería funcionar.

function fireEvent(obj,evt){ var fireOnThis = obj; if( document.createEvent ) { var evObj = document.createEvent(''MouseEvents''); evObj.initEvent( evt, true, false ); fireOnThis.dispatchEvent( evObj ); } else if( document.createEventObject ) { var evObj = document.createEventObject(); fireOnThis.fireEvent( ''on'' + evt, evObj ); } }

Quiero que el script java haga clic en un enlace en la página ... Encontré algo en la red que sugiere agregar una función como esta:

function fireEvent(obj,evt){ var fireOnThis = obj; if( document.createEvent ) { var evObj = document.createEvent(''MouseEvents''); evObj.initEvent( evt, true, false ); fireOnThis.dispatchEvent(evObj); } else if( document.createEventObject ) { fireOnThis.fireEvent(''on''+evt); } }

Luego llámalo usando:

fireEvent(document.getElementById(''edit_client_link''),''click'');

Esto parece funcionar bien para FF, pero con IE no funciona.

¿Algunas ideas?


Encontramos una manera más simple de simular el clic derecho (probado en IE8). Utilice un doble clic o dos clics individuales, luego haga clic con Shift-F10. No sé exactamente por qué funciona esto, pero lo hace. En el código de ejemplo siguiente, usamos el método Selenium para hacer clic dos veces, luego usamos el controlador IE para encontrar WebElement y enviamos la secuencia de teclas Shift-F10, que emula el botón derecho del mouse. Usamos esto para probar aplicaciones web basadas en GWT. Un lugar donde esto no funcionó fue en un control de árbol donde el menú de contexto estaba configurado para aparecer en las coordenadas del mouse. A menudo, las coordenadas del mouse eran negativas, por lo que al hacer clic derecho en el elemento del menú no se visualizaban las opciones del menú secundario. Para manejar este caso, agregamos un poco de código al control, de modo que si las coordenadas del mouse eran negativas, el menú contextual aparece en un 0,0.

selenium.click("//td[@role=''menuitem'' and contains(text(), ''Add'')]"); selenium.click("//td[@role=''menuitem'' and contains(text(), ''Add'')]"); new InternetExplorerDriver().findElement(By.xpath("//td[@role=''menuitem'' and contains(text(), ''Add'')]")).sendKeys(Keys.SHIFT, Keys.F10);


Esto no funcionó para mí al principio y luego vi que al código le faltaba un parámetro para la porción IE. Aquí hay una actualización que debería funcionar:

function fireEvent(obj, evt) { var fireOnThis = obj; if (document.createEvent) { // alert("FF"); var evtObj = document.createEvent(''MouseEvents''); evtObj.initEvent(evt, true, false); fireOnThis.dispatchEvent(evtObj); } else if (document.createEventObject) { // alert("IE"); var evtObj = document.createEventObject(); fireOnThis.fireEvent(''on''+evt, evtObj); } }


Intenta esto si sigues recibiendo un error (Uso del prototipo Jquery +)

function fireEvent(element,event){ if (document.createEventObject){ // dispatch for IE try { var evt = document.createEventObject(); jQuery(element).change(); return element.fireEvent(''on''+event,evt); } catch(e) { } } else{ // dispatch for firefox + others var evt = document.createEvent("HTMLEvents"); evt.initEvent(event, true, true ); // event type,bubbling,cancelable return !element.dispatchEvent(evt); } }


Si quiere simular clics solo para enlaces , puede usar esto:

function clickLink(id){ location.href=document.getElementById(id).href; }