¿Puede un guión de Greasemonkey saber lo que se ha cargado en otra pestaña? -- firefox campo con script campo con browser-tabs campo con greasemonkey camp aplicación linux Relacionados El problema

Can a greasemonkey script know what's been loaded into another tab?


1
vote

problema

Español

Estoy planeando escribir un script de Greasemonkey que se ejecutará en una URL particular (@InClude o @match), pero, me gustaría tenerla para que si abra una o más pestañas adicionales con la misma URL, la secuencia de comandos de Greasemonkey no se ejecutará en la segunda (y más) páginas duplicadas.

Entonces, por ejemplo, digamos que tengo un script de Greasemekey que hace cambios de "estilo" a una página web (o de alguna otra manera "lo modifica") cuando abro "Google.com". Quiero poder abrir otra pestaña a "Google.com" donde no se ejecutará la script de Greasemonkey. O, más correctamente, se ejecutará, pero detectará que ya se está ejecutando y "modificar" la página en la primera pestaña y luego "Salir" en la segunda pestaña. La segunda pestaña permanecerá abierta pero es simplemente "no afectada" por el script.

No sé si un script de Greasemonkey puede "ver" otras pestañas abiertas, pero si puede, mi primer pensamiento fue verificar si otra pestaña ya estaba cargada en esa página, y luego para salir si se lo descubrió. estaba.

pero tendría que ser un poco más involucrado que eso porque:

  1. Si la primera pestaña se cerró y se abrió una pestaña nueva ("tercera") a esa URL, me gustaría que el script de Greasemekey se ejecute y "Modificar" esa página que tendría en la primera página.
  2. De manera similar, si "actualice" la primera pestaña (por ejemplo, después de editar el script de Greasemonkey, o por otra razón), querría que el script de Greasemekey se ejecute y "Modificar" la página recargada.

Entonces, parece que el guión de Greasemonkey tendría que para:

  1. Revise la URL de la pestaña para encontrar un "partido", y luego "echar un vistazo a esa pestaña" para ver si el script de Greasemonkey fue "activamente" modificando esa página (tal vez busque un DIV oculto, vacío y llamado ". "u otro elemento).
  2. Use algún tipo de variables "de almacenamiento local" o "Cross-Tab (superglobal)" para realizar un seguimiento de las pestañas a medida que se abren y cierran.

No estoy buscando a alguien que escriba este script para mí, siento que soy capaz de escribir el guión si sabía cómo hacer algunas cosas. Si un script que hace todo o la mayor parte de esto ya existe, eso también sería genial.

Para empezar, necesito saber si (y cómo) un guión de Greasemonkey:

  1. puede "ver" otras pestañas.
  2. puede leer las URL (y quizás el texto "título") de las otras pestañas.
  3. verifique la existencia de elementos (y quizás lectura pero no escriba) en la otra pestaña.
  4. Administrar "Almacenamiento local (computadora)" o administrar "variables globales de Tab Tab" (si se puede hacer esto).
Original en ingles

I'm planning to write a Greasemonkey script that will run on a particular URL (@include or @match), but, I'd like to have it so that if I open up one or more additional tabs with the same URL, the Greasemonkey script will NOT run on the second (and further) duplicate pages.

So, for example, say I have a Greasemonkey script that makes "style" changes to a webpage (or in some other way "modifies" it) when I open "google.com". I want to be able to open another tab to "google.com" where that Greasemonkey script will not run. Or, more correctly, will run but will detect that it is already running and "modifying" the page in the first tab and then "exit" in the second tab. The second tab will remain open but is just "unaffected" by the script.

I don't know if a Greasemonkey script can "see" other opened tabs, but if it can, my first thought was to check if another tab was already loaded to that page, and then to exit if it found that it was.

But it would have to be a bit more involved than that because:

  1. If the first tab was closed and a new ("third") tab was opened to that URL, I would want the Greasemonkey script to run and "modify" that page as it would have on the first page.
  2. Similarly, if I "refresh" the first tab (say after editing the Greasemonkey script, or for another reason), I would want the Greasemonkey script to run and "modify" the reloaded page.

So, it seems the Greasemonkey script would have to either:

  1. Check the URL of each other tab to find a "match", and then "Peek into that tab" to see if the Greasemonkey script was "actively" modifying that page (perhaps look for a hidden, empty, named "DIV" or other element).
  2. Use some sort of "local storage" or "cross-tab global (superglobal ?) variables" to keep track of the tabs as they open and close.

I'm not looking for someone to write this script for me, I feel I'm capable of writing the script if I knew how to do a few things. If a script that does all or most of this already exists then that would be great too.

To get started, I need to know if (and how) a Greasemonkey script:

  1. Can "see" other tabs.
  2. Can read the URLs (and perhaps the "title" text) of the other tabs.
  3. Check for existence of (and perhaps read but not write) elements in the other tab.
  4. Manage "local (computer) storage" or manage "cross-tab global variables" (if this can even be done).
           

Lista de respuestas

5
 
vote

Greasemonkey no puede:

  1. ver otras pestañas.
  2. Revise las URL de otras pestañas.
  3. Cheque para los nodos / elementos DOM en otras pestañas.

La razón es que Greasemonkey, Tampermonkey, etc. No exponen estas APIs a / para los usuarios de los usuarios.
(Extensiones de navegador Full> pueden hacer todas esas cosas).


Greasemonkey puede:

  1. cross comunican entre instancias de script usando GM_setValue() doc < / a> y ABCDEFGHIJKLMNABCDEFGHIJKLMN1 DOC . < / li>
  2. A veces, también puede usarla .postMessage() < / Código> . ( ejemplo )
    Esto será probablemente solo funciona para usted si usa window.open para crear la nueva pestaña.
  3. Dado que usted está en el mismo dominio, también puede usar localStorage o cookies para comunicarse.
  4. Finalmente, si las nuevas pestañas se abren desde la pestaña Maestro, la furgoneta se comunica a la nueva pestaña a través de los parámetros de URL (o el hash). Consultela esta versión de usuarios por un ejemplo de eso. (Tenga en cuenta cómo se manejan los enlaces SEMC.)

No estoy buscando a alguien que escriba este script para mí, siento que soy capaz de escribir el guión si sabía cómo hacer algunas cosas. Si un script que hace todo o la mayor parte de esto ya existe, eso también sería genial.

Se han abordado todos los bits y piezas en el desbordamiento de la pila, pero no en ninguna pregunta que recuerdo.

Si usa variables para comunicarse (Métodos 1 o 3), asegúrese de tener algo así como un controlador de eventos abcdefghijklmn5/defhijklmn5 para borrar las variables antes de que se cierre la página maestra.

 

Greasemonkey cannot:

  1. See other tabs.
  2. Check the URLs of other tabs.
  3. Check for DOM nodes/elements in other tabs.

The reason is that Greasemonkey, Tampermonkey, etc. do not expose these APIs to/for userscripts.
(Full-fledged browser extensions can do all of those things.)


Greasemonkey can:

  1. Cross communicate between script instances using GM_setValue()Doc and GM_getValue()Doc.
  2. Sometimes, you can also use .postMessage(). xc2xa0 (Example)
    This will probably only work for you if you use window.open to create the new tab.
  3. Since you are on the same domain, you could also use localStorage or cookies to cross communicate.
  4. Finally, if the new tabs are opened from the master tab, you van communicate to the new tab via URL parameters (or the hash). See this userscript for an example of that. (Note how the SEMC links are handled.)

I'm not looking for someone to write this script for me, I feel I'm capable of writing the script if I knew how to do a few things. If a script that does all or most of this already exists then that would be great too.

All the bits and pieces have been addressed on Stack Overflow, but not in any one question that I recall.

If you use variables to communicate (methods 1 or 3), be sure to have something like a beforeunload event handler to clear the variables before the master page closes.

 
 

Relacionados problema

1  ¿Cómo abrir el enlace en la nueva pestaña sin hacer clic con el botón derecho?  ( How to open link in new tab without right clicking ) 
¿Hay alguna forma de abrir un enlace web a una nueva pestaña sin tener que usar la función de clic derecho? Yo uso Firefox. ...

2  ¿Qué versión de XPath apoya Firefox?  ( Which version of xpath does firefox support ) 
Estoy construyendo un raspador web usando Firefox con Selenium Webdriver, y me gustaría usar expresiones XPath que existen solo en XPath 2 y XPath 3. ¿Qué v...

0  Muestra caracteres chinos en Firefox en algunos sitios  ( Chinese characters displays in firefox on some sites ) 
Acabo de abrir Firefox y, de repente, algunos sitios han comenzado a mostrar caracteres chinos. Actualizar no parece ayudar. ¿Alguien puede decirme qué está p...

0  Proxy web de Firefox no se llama  ( Firefox web proxy not being called ) 
He creado un controlador genérico (similar a una página web) handler1.ashx . Cuando busco a http://localhost:50824/Handler1.ashx se llama al manejador. P...

1  Cómo bloquear la imagen del logotipo de Google en Firefox  ( How to block google logo image in firefox ) 
Estoy usando Firefox 21.0 en Linux Slackware. Tengo Adblock Plus Addon. Quería bloquear este logo de Google cerca del panel de búsqueda: Encontré que est...

0  Evite que Firefox muestre "Para mostrar esta página, Firefox debe enviar información que repetirá cualquier acción ..."  ( Prevent firefox from displaying to display this page firefox must send informa ) 
Whenenver i Actualizar una página que envía datos a través de POST, recibo este mensaje. Sin embargo, para algunas páginas (particularmente los juegos), no ...

0  ¿Tecla de acceso directo de Firefox para la búsqueda de "pestañas de otras ventanas" funcionalidad?  ( Firefox shortcut key for search tabs from other windows functionality ) 
CTRL + Shift + e le da Tab Groups en Firefox. Una vez que ingrese la pantalla Tab Groups en Firefox, hay un poco de lupa que se puede hacer cli...

20  ¿Puedo ocultar tabulaciones nativas en la parte superior de Firefox?  ( Can i hide native tabs at the top of firefox ) 
He comenzado a usar pestaña de estilo de árbol en Firefox. Es una excelente solución para los casos en los que tiene muchas, muchas pestañas y usted quiere ...

1  Apertura del respecto: enlaces utilizados específicamente para Firefox desde el Explorador de archivos  ( Opening the about links used specifically for firefox from file explorer ) 
Ayuda con la apertura del about: enlaces utilizados específicamente para Firefox. Más información aquí Estoy tratando de abrirlos de Explorer de archivo...

4  ¿Cómo configurar Google Chrome para no cargar pestañas hasta que se seleccionan?  ( How to set google chrome to dont load tabs until selected ) 
He establecido mi Google Chrome en la configuración de inicio en continúa donde lo dejó Y siempre que comience a que mi cromo todas las pestañas comienza...

1  Firebug no terminará la instalación en Firefox  ( Firebug wont finish installing on firefox ) 
Estoy usando Firefox 3.54 y simplemente actualizó el complemento Firebug a la última versión. Reinicié Firefox, pero la instalación de Firebug no se terminó...

0  Firefox sigue diciendo sitios web, soy algún otro idioma (creo)  ( Firefox keeps telling websites i am some other language i think ) 
Cuando voy a varios sitios, creo que Firefox está informando al sitio que soy otro idioma, lo que hace que ciertos encabezados parezcan que deberían estar en ...

3  Emitir tabulaciones entre campos en tiddlywiki  ( Issue tabbing between fields in tiddlywiki ) 
pestaña y Shift + ficha son excelentes para entrar y salir de los campos sin tomar sus manos del teclado. En mi instalación Firefox 9.0 instalé y lueg...

3  ¿Cómo hago de YouTube en el caché de Firefox el video, por lo que no necesita buffer la próxima vez que lo juego?  ( How do i make youtube on firefox cache the video so it doesnt need to buffer th ) 
Está bien, solo para estar claro, sepa cómo deshabilitar la nueva reproducción del tablero de YouTube, por lo que no es lo que estoy pidiendo. Lo que esto...

1  Deshabilitar "Firefox debe enviar información que repetirá cualquier acción"  ( Disable firefox must send information that will repeat any action dialog box ) 
Estoy usando la extensión check4change en Firefox a Compruebe si hay cambios en una página web para que pueda reservar una cita. Desafortunadamente, la pági...




© 2021 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos