2015-07-26 10 views
15

Ich habe festgestellt, dass, wenn ich eine Google Mail-Registerkarte mit Konversationsansicht geöffnet/deaktiviert habe und ich dann eine andere Registerkarte öffne, um die Konversationsansicht zu ändern Konversationsansicht, in der es gestartet wurde, z. B. wenn neue Suchen usw. durchgeführt werden, und die neue Registerkarte verwendet die Einstellung, die ich gerade geändert habe.Google Mail-Konversationsansicht toggle bookmarketlet/favelet/"Scriptlet"

Dies führte mich zu der Annahme, dass es einige JavaScript Bookmarklet/Favelet/"Scriptlet" könnte, die uns leicht die Einstellung für eine bestimmte Gmail-Registerkarte ändern können, ohne in die Einstellungen gehen zu müssen.

Kennt jemand davon bereits existiert oder ist jemand in der Lage, es zu erstellen? Mein Gedanke wäre, eine Ladung von Gmail damit auf und davon zu nehmen und eine Diff/Winmerge auf die beiden zu tun, um zu sehen, was anders ist und es von dort zu nehmen, aber ich hoffe, jemand hat es bereits erstellt =).

Antwort

7

Ich werde schauen in die gmail js und ein Bookmarklet machen: P

Edit: scheint die js Viele verschleiert wird, von dem ursprünglichen js die Funktion Kopieren wird wird schwer sein ...

Ich überprüfe, was die HTML-Änderungen zwischen den beiden Ansichten sind und schreibe selbst eine js-Funktion, um diese Änderungen zu übernehmen.

Ich ging und stattdessen machte es ein bisschen anders, ich einige js schrieb, die tatsächlich die Sache tut, die Sie selbst tun würde (es simuliert, um die Einstellungen zu gehen und zu ändern sie):

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); 
} 

Update:

ich habe eine jsfiddle mit einem Link, der in der Lesezeichenleiste gezogen werden kann:

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

ich die jQuery-Code ersetzt mit reinem js seit jquery auf gmail selbst scheint nicht richtig zu funktionieren.

Das Bookmarklet Code:

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); 

Diese Methode ziemlich einfach ist und nicht sofort entweder (dauert 1 Sekunde), außer, dass es nicht die aktuelle Position speichern und Seite, die Sie waren.

+0

funktionieren ziemlich gut - dank – sa289

+0

ich Bounties mag haha ​​ – seahorsepip

+0

Das ist brilliant. Danke Seahorsepip. Es gab einen Thread auf dem Google Suggest-A-Labs-Feature-Anfrage-Forum für wie 4 Jahre, und Sie sind einfach gegangen und haben es mit 2 Zeilen Javascript getan. Bravo. – danielpops

3

Gespeicherte Einstellungen dienen nur dazu, den JS-Code auf die von Ihnen bevorzugte Weise neu zu laden, damit Sie die Änderung leicht vornehmen können. Seahorsepip hat eine gute Sache gemacht, wenn Sie ein spezielles Fett-Skript benötigen, um es in Ihrem Chrom zu installieren, würde ich Ihnen gerne helfen.

0

Neue Lösung für 2018 (siehe Javascript Bookmarklet to toggle Gmail Conversation View).

Dadurch wird der aktuelle Zustand Ein/Aus und Speichern schalten:

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); 

So würde Ihr Bookmarklet sein:

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); 

(Danke, @Zenoo!

)

Hinweis: Wenn Sie mehrere Google Mail geöffnet Konten (wie ich), wird dies in Ihrem aktuellen Fenster arbeitet (im Gegensatz zu https://mail.google.com/mail/u/0/#settings/general die zu Ihrem Standardkonto geht)