2011-07-13 16 views
5

Sé que ha habido varias preguntas similares, pero no he visto una respuesta a mi necesidad específica: ¿Hay alguna manera de hacer clic en un botón en una página web lanzada por separado? Por ejemplo, lanzo otra página web a través de:programáticamente haga clic en un botón de entrada en otra página web?

  • <a href="x" target="y"> o
  • window.open()

¿Puedo haga clic en un botón de entrada en esa página web puesto en marcha mediante programación?

+0

¿Cuál es el propósito de hacer eso? –

Respuesta

0

Puede hacer clic en cualquier elemento que pueda seleccionar.

Solo puede seleccionar elementos en las ventanas a las que tenga privilegios de seguridad.

Tiene derechos sobre su propia ventana y los derechos sobre las ventanas dentro del mismo dominio de seguridad &.

Para acceder al elemento que necesita el objeto de la ventana, que se devuelve desde window.open

var newWin = window.open(siteYouHaveAccessTo); 
newWin.document.getElementById('foo').click(); 

Si usted está tratando de hacer clic en el botón Search en www.google.com, estás SOL.

+0

hay algunos detalles que me faltan en cuanto a los dominios a los que tiene acceso. Sé que 'http' vs' https' hace una diferencia, lo que no recuerdo es si hay un problema con los subdominios y/o directorios. – zzzzBov

2

A menos que la página esté bajo su propio control o que resida en el mismo dominio, entonces no, no es posible. Esta sería una secuencia de comandos entre sitios y todos los navegadores tienen cajas de seguridad instaladas para evitar que ocurra algo como esto. ¿Por qué intentas presionar mediante programación un botón en una página que también estás abriendo programáticamente?

2

Sí. Cuando hagas window.open, te devolverá un objeto de ventana. Var win = window.open(); win.fnSubmit(); asumiendo fnEnviar es la función en la otra página que hará el clic. y ambos pqges en el mismo dominio.

0

La encuesta dice ... tal vez. Si has hecho tu tarea, probablemente puedas hacer que la comunicación entre en el mismo subdominio. A partir de ahí, se vuelve cada vez más difícil: nunca he tenido un soporte consistente de subdominios entre navegadores para manipular JavaScript entre dos ventanas (o iframes).

Dicho esto, si son del mismo dominio, es una cuestión de descender a él. Si tengo:

  • ventana Una Ventana que se abre B
  • Ventana B declara var winBVar
  • ventana A es capaz de acceder winBVar después, y sólo después, se declara que la variable (como en, usted todavía necesita espere a document.onload, etc)
1

Esta es una técnica utilizada por algunos ataques de inyección de pirateo. Básicamente, puede inyectar javascript en la cadena de consulta que se puede adjuntar al DOM, cambiar una fuente de archivo de imagen o swf o simplemente ejecutar cuando se carga la página; example here y example here.

O si ya conoce la estructura de la otra página, puede orientar directamente los métodos u objetos.

Pero como estas cosas no son agradables, supongo que tiene buenas razones por las que no puede tocar el código en la página de recepción pero quiere ajustar su comportamiento.

Cuestiones relacionadas