2015-07-26 12 views
15

Ho notato che se ho una scheda gmail aperta con la visualizzazione conversazione attiva/disattiva, quindi apro un'altra scheda e cambia l'impostazione della visualizzazione della conversazione, la mia scheda originale rimane nella stato di visualizzazione della conversazione iniziato come quando si eseguono nuove ricerche ecc. e la nuova scheda utilizza l'impostazione in cui l'ho appena modificata.visualizzazione conversazione di Gmail attiva bookmarketlet/favelet/"scriptlet"

Questo mi ha portato a pensare che potrebbe esserci qualche JavaScript bookmarklet/favelet/"scriptlet" che potrebbe facilmente permetterci di modificare temporaneamente le impostazioni per una data scheda Gmail senza dover entrare nelle impostazioni.

Qualcuno sa di questo già esistente o qualcuno è in grado di crearlo? Il mio pensiero sarebbe quello di catturare un carico di gmail con esso on e con esso off e fare un diff/winmerge sui due per vedere cosa è diverso e prenderlo da lì, ma spero che qualcuno lo abbia già creato =).

risposta

7

Guarderò nelle js gmail e fare un bookmarklet: P

Edit: sembra i js è offuscato molto, copiando la funzione dei js originali sara 'difficile ...

Controllerò le modifiche HTML tra entrambe le visualizzazioni e scriverò una funzione js per applicare tali modifiche.

sono andato e invece ha reso un po 'diverso, ho scritto qualche js che in realtà la cosa che si dovrebbe fare da soli (simula andare a impostazioni e cambiarle):

switch_conv_view = function() { 
    //Go to settings 
    window.location.href = "https://mail.google.com/mail/u/0/#settings/general"; 
    setTimeout(function(){ 
     //Change view 
     $("tbody tr:nth-child(7) table input:not(:checked)").click(); 
     //Save changes (google takes care of redirect) 
     $("[guidedhelpid=save_changes_button]").click(); 
    }, 1000); 
} 

Aggiornamento:

ho fatto un jsfiddle con un link che può essere trascinata nella barra dei segnalibri:

https://jsfiddle.net/seahorsepip/j5exk7nw/

ho sostituito il codice jQuery con js puro poiché jquery su gmail non sembra funzionare correttamente.

Il codice bookmarklet:

javascript: 
window.location.href = "https://mail.google.com/mail/u/0/#settings/general"; 
setTimeout(function(){ 
    document.querySelector("tbody tr:nth-child(7) table input:not(:checked)").click(); 
    document.querySelector("[guidedhelpid=save_changes_button]").click(); 
}, 1000); 

Questo metodo è piuttosto semplice e non istantanea o (prende 1 secondo), oltre a ciò non salvare la posizione corrente e la pagina foste a.

+0

funziona abbastanza bene - grazie – sa289

+0

Mi piace generosità haha ​​ – seahorsepip

+0

È brillante. Grazie Seahorsepip. C'è stato un thread nel forum di richiesta delle caratteristiche di google suggest-a-labs per circa 4 anni, e l'hai appena fatto e lo hai fatto con 2 linee di javascript. Bravo. – danielpops

3

Le impostazioni salvate sono solo per ricaricare il codice JS nel modo che preferisci, quindi sei corretto e può essere facilmente modificato. seahorsepip ne ha fatto uno bello, se hai bisogno di uno script di grasso personalizzato da installare sul tuo cromo sarei lieto di aiutarti.

0

Nuova soluzione per il 2018 (vedere Javascript Bookmarklet to toggle Gmail Conversation View).

Questa alternerà l'attuale stato On/Off e Save:

window.location.href = "https://mail.google.com"+window.location.pathname+"#settings/general"; 
sBase="div.AO table tbody tr:nth-child(8) table:nth-of-type("; 
sOn=sBase+"1) input"; 
sOff=sBase+"2) input"; 
setTimeout(function(){ 
    if (document.querySelector(sOff).checked) 
     document.querySelector(sOn).click(); 
    else 
     document.querySelector(sOff).click(); 
    document.querySelector("[guidedhelpid=save_changes_button]").click(); 
}, 1000); 

Così il vostro bookmarklet sarebbe:

javascript:window.location.href="https://mail.google.com"+window.location.pathname+"#settings/general";sBase="div.AO table tbody tr:nth-child(8) table:nth-of-type(";sOn=sBase+"1) input";sOff=sBase+"2) input";setTimeout(function(){if(document.querySelector(sOff).checked) document.querySelector(sOn).click();else document.querySelector(sOff).click();document.querySelector("[guidedhelpid=save_changes_button]").click()},1000); 

(Grazie, @Zenoo!)

Nota: Se si dispone di più account Gmail aperti (come me) questo lavoro nella finestra corrente (a differenza https://mail.google.com/mail/u/0/#settings/general che andrà al tuo account predefinito)