Ho provato numerose volte a riprodurre il problema, ma non ho potuto. Quindi questa soluzione è stata testata inserendo manualmente un URL standard due volte, tramite copia e incolla, e passando da lì. Ho anche utilizzato l'URL errato che hai mostrato nella tua domanda.
In Safari, questo essenzialmente cerca di creare un URL valido dal doppio URL usando AppleScript eseguito come un servizio Automator premendo ⌘ B e imposta il documento corrente ( finestra, scheda) all'URL appropriato.
Crea un servizio di automazione con le impostazioni come mostrato nell'immagine sottostante e salvalo come:
Correggi l'URL non valido
Quindi in Preferenze di Sistema > Tastiera > Tasti di scelta rapida > Servizi, scorri verso il basso fino a Generale, seleziona
Correggi URL non valido, fai clic su Aggiungi collegamento e digita: ⌘ B
CodiceAppleScriptperilserviziodiautomazione:
onbadURL()try--#PutthebadURLontheClipboard.tellapplication"Safari"
activate
delay 0.5
tell application "System Events"
key code 37 using {command down} # ⌘L
delay 0.5
key code 8 using {command down} # ⌘C
delay 0.5
end tell
end tell
-- # Retrieve the bad URL from the Clipboard.
set theBadURL to get (the clipboard)
-- # Trim the first eight characters off of 'theBadURL'.
-- # This is done because the bad URL can have an occurrence of both 'http' and 'https' in the string in either
-- # order and by trimming off, it lessens the amount of logic necessary to build a good URL from the bad URL.
-- # The good URL, after all, is going to be built from what's after the second occurrence of either one.
-- # Test first for 'https' then 'http', as that makes more sense logically to do so.
set theBadURL to do shell script "awk 'BEGIN { print substr(\"" & theBadURL & "\", 9) }'"
-- # Build the good URL from the bad URL.
set theGoodURL to do shell script "awk -F 'https.*//' '{print $2}'<<<" & quoted form of theBadURL
if theGoodURL is not equal to "" then
set theGoodURL to "https://" & theGoodURL
else
set theGoodURL to do shell script "awk -F 'http.*//' '{print $2}'<<<" & quoted form of theBadURL
if theGoodURL is not equal to "" then
set theGoodURL to "http://" & theGoodURL
end if
end if
return theGoodURL
on error eStr number eNum
display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
return
end try
end badURL
on run
try
tell application "Safari"
activate
set thisTabsURL to (get URL of current tab of window 1)
-- # Check for bad URL and if found, build a good URL from it.
tell current application
if thisTabsURL contains "file:" then
set theGoodURL to my badURL()
tell application "Safari" to set the URL of the front document to theGoodURL
end if
end tell
end tell
on error eStr number eNum
display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
return
end try
end run
Si noti che mentre ho provato questo sotto OS X 10.8.5 e macOS 10.12 e funzionava sotto le mie condizioni di test, tuttavia potrebbe non funzionare correttamente ogni volta in ogni condizione e quindi perché try
e on error
< em> istruzioni sono in uso nel codice . Si spera che questo intrappoli qualsiasi errore con output appropriato per migliorare il codice per gestire eventuali errori che non si sono verificati durante il mio test.