Esta respuesta especifica explica cómo acceder a los contenidos de todos los iframes gmail.com https://stackoverflow.com/a/9439525/222236

Pero en mail.google.com se lanza este error:

Unsafe JavaScript attempt to access frame with URL https://plus.google.com/u/0/_/... from frame with URL https://mail.google.com/mail/u/0/#inbox. Domains, protocols and ports must match.

He intentado añadir *://plus.google.com/* a los partidos de el manifiesto de la extensión, pero no ayuda.

Actualización: Comprobación de la dirección url antes de acceder al contenido de las obras, pero mi lógica es muy crudo en el momento que sólo busca en google plus:

        if(-1==iframes[i].src.indexOf('plus.google.com')) {
            contentDocument = iframes[i].contentDocument;
            if (contentDocument && !contentDocument.rweventsadded73212312) {
                //add poller to the new iframe
                checkForNewIframe(iframes[i].contentDocument);
            }
        }
  • Creo que en muchos casos puede ser un requisito para recorrer todas las subtramas, y la exclusión de los dominios externos de control de flujo de romper principal de la aplicación función. Así, en el caso de extensión de chrome que me sugieren para reemplazar el bucle a través de los fotogramas con content_scripts "all_frames": true declaración en el manifiesto, y la opción lógica para combinar los resultados (si es necesario).
InformationsquelleAutor Cilvic | 2012-07-19

2 Comentarios

  1. 2

    El acceso está bloqueado debido a la mismo origen de la política de.

    La manera correcta para evitar el error es excluir los fotogramas de un origen diferente. Su lógica es muy crudo, de hecho. No buscar específicamente en el nombre de host, y no tiene en cuenta otros dominios.

    Invertir la lógica de tener una solución sólida:

    if (iframes[i].src.indexOf(location.protocol + '//' + location.host) == 0 ||
        iframes[i].src.indexOf('about:blank') == 0 || iframes[i].src == '') {

    Explicación de este lista blanca:

    • protocol://host/ = https://mail.google.com.

      Obviamente, el host actual ha permitido
    • about:blank y una cadena vacía

      Estos marcos se crean de forma dinámica y con guión de GMail.
  2. 1

    mail.google.com y plus.google.com no son el mismo dominio. Implementaciones de JavaScript en los navegadores web modernos no permiten cruz-dominio de secuencias de comandos.

    Sin tener que recurrir a diferentes tipos de trucos, la forma correcta de conseguir alrededor de esto, es a través de CORS (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing), que no está disponible para usted en esta circunstancia.

Dejar respuesta

Please enter your comment!
Please enter your name here