Stellen Sie sicher, dass Safari Hintergrundregisterkarten lädt

7

Ich denke, dies ist ein neues Verhalten seit Safari 11, aber ich bin nicht absolut sicher.

Ich neige dazu, Safari die ganze Zeit offen zu lassen, mit mehreren Seiten mit Registerkarten, jede für ein anderes "Thema".
Beim Neustart - wenn ich weniger schmackhafte Cookies usw. bereinigt habe oder sogar in seltenen Fällen neu gestartet habe - wurden alle Registerkarten neu geladen, unabhängig davon, ob sie derzeit sichtbar sind oder nicht.

Dieses Verhalten hat sich geändert und jetzt ist jede Registerkarte, zu der ich gehe, leer und wird erst geladen, wenn ich tatsächlich dazu wechsle. Ich verstehe, dass die Philosophie darin bestehen könnte, Ressourcen zu sparen, bis Sie „beweisen“, dass Sie sie tatsächlich benötigen, aber ehrlich gesagt, wenn ich sie nicht benötige, wären sie überhaupt nicht offen.
Ich habe mir angewöhnt, kurz nach dem Start schnell durch alle Registerkarten zu blättern, sodass ich die irritierende Verzögerung nur einmal sehe.

Weitere Irritation - Die Version, die nach der Pause von 2 Sekunden geladen wird, ist immer noch die zwischengespeicherte Version, daher müssen Sie sie trotzdem sofort aktualisieren: /

Deshalb möchte ich dieses Verhalten beseitigen.

Ich möchte, wenn möglich, dass jede Registerkarte zum Zeitpunkt des Starts von Safari bereits mit der aktuellen, nicht zwischengespeicherten Version der Seite geladen ist. Danach kann ich meine eigene Aktualisierung durchführen. Ich möchte nur nicht die zusätzlichen 2 Sekunden für jede Registerkarte bei der ersten Verwendung warten müssen.

Ich habe die Develop & Debug-Menüs bereits sichtbar, falls das 'Fix' vorhanden ist, aber ehrlich gesagt ist mein Verständnis dieser Menüs nicht optimal. Ich denke ganz ehrlich, ich habe sie sichtbar, damit ich mich cool fühle, anstatt weil ich tatsächlich weiß, wofür sie sind;)

Dies ist derzeit Safari 11.0.2 auf El Capitan.

Tetsujin
quelle

Antworten:

2

Mir ist keine Möglichkeit bekannt, das Standardverhalten von Safari zu ändern, aber diese Aufgabe kann einfach genug automatisiert werden, wenn Sie über die Möglichkeit verfügen, ein AppleScript auszuführen.

Ich verwende FastScripts und Keyboard Maestro selbst, damit ich meinen vielen Skripten globale oder app-spezifische Tastaturkürzel zuweisen kann.

Dieses AppleScript lädt alle Registerkarten im Frontfenster von Safari neu.

----------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2011/08/09 20:33
# dMod: 2015/11/14 16:46
# Appl: Safari
# Task: Reload Every Tab in front window.
# Libs: ELb
# Osax: None
# Tags: @Applescript, @Safari, @Reload, @Tabs, @Front, @Window
----------------------------------------------------------------

try

   tell application "Safari"

      set tabList to tabs of front window

      repeat with theTab in tabList
         tell theTab to do JavaScript "location.reload(true)"
      end repeat

   end tell

on error e number n
   stdErr(e, n, true, true) of me
end try

----------------------------------------------------------------
--» HANDLERS
----------------------------------------------------------------
on stdErr(e, n, beepFlag, ddFlag)
   set e to e & return & return & "Num: " & n
   if beepFlag = true then
      beep
   end if
   if ddFlag = true then
      if n ≠ -128 then
         try
            tell application (path to frontmost application as text) to set ddButton to button returned of ¬
               (display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
                  default button "OK" giving up after 30)
            if ddButton = "Copy Error Message" then set the clipboard to e
         end try
      end if
   else
      return e
   end if
end stdErr
----------------------------------------------------------------

Auf meinem System habe ich ihm eine Tastenkombination gegeben R, was für mich eine gute Mnemonik ist.

Es ist einfach genug, das Skript zu ändern, um jede Registerkarte in jedem Fenster neu zu laden.

----------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2011/08/09 20:33
# dMod: 2011/08/09 20:57
# Appl: Safari
# Task: Reload Every Tab in Every Window.
# Libs: None
# Osax: None
# Tags: @Applescript, @Reload, @Tabs, @Every, @Window
----------------------------------------------------------------------------

tell application "Safari"

    set tabList to tabs of windows

    repeat with theWindow in tabList
        repeat with theTab in theWindow
            tell (theTab's contents)
                do JavaScript "location.reload(true)"
            end tell
        end repeat
    end repeat

end tell

----------------------------------------------------------------------------

Ich benutze dieses so selten, dass ich ihm keine Tastenkombination gegeben habe und es manuell über das FastScripts-Menü aktivieren muss. (Dies ist auch ein Schutz, um zu verhindern, dass ich versehentlich einen Hotkey drücke und warten muss, bis jeder Tab neu geladen wird.)

-ccs

Christopher Stone
quelle