FILE:// Links in Firefox anpassen
Der Firefox unterstützt anders als der Windows Explorer keine Links, die auf das Filesystem verzweigen. Und in Abteilungen, wo man keinen Einfluss auf die about:config des Firefox hat, ist guter Rat gefragt.
Wenn man das folgende Script am Ende jeder Seite einbettet, wird der Link bei alles Browsers die kein Internet Explorer angepasst.
Es wird jQuery verwendet. Daher muss sichergestellt sein, das jQuery vorher bereits eingebunden wurde.
// Internet Explorer 6-11
const isIE = /*@cc_on!@*/false || !!document.documentMode;
function getScript(sPath) {
let scriptcontent = [];
sPath = sPath.replace(/\\/g,"\\\\");
scriptcontent.push('set objShell = CreateObject("Wscript.Shell")');
scriptcontent.push('strPath = "' + sPath + '"');
scriptcontent.push('strPath = "explorer.exe /e," & strPath');
scriptcontent.push('objShell.Run strPath');
scriptcontent.push('Set fso = CreateObject("Scripting.FileSystemObject")');
scriptcontent.push('fso.DeleteFile Wscript.ScriptFullName');
return scriptcontent.join("\r\n");
}
function getScriptb64 (sPath) {
scr = getScript (sPath)
return "data:application/octed-stream;base64," + btoa(scr)
}
function zeigeHinweis(url) {
let msg=['Der Firefox unterstuetzt leider Links zu Dateien und Ordnern im Dateisystem nicht.',
'Daher wird jetzt eine kleine Datei zum Download angeboten, die man am Besten auf dem Desktop',
'ablegt und dann per Doppelklick startet.',
'',
'Nachdem der Wunschpfad geöffnet wurde, löscht sich die Hilfsdatei von selbst.'
]
if (/(^file:\/\/.*|data:application\/octed-stream;base64)/i.test(url) && localStorage.filelinkinfo==undefined) {
alert (msg.join('\n'));
localStorage.filelinkinfo="shown"
} else {
return
}
}
$(document).ready(function() {
if (isIE) {
return
}
$.each($('a[href*="file:"]'),function(k,v) {
currHref=this.href;
this.href=getScriptb64(currHref);
this.download="openLink.vbs"
$(this).click(function() {
zeigeHinweis(currHref);
})
})
})
Was passiert denn genau?
Das Script durchsucht in Zeile 43 alle Links, die als verweis mit file:// beginnen. Bei jedem Fund wird der aktuelle Link in currHref zwischengespeichert und über die Funktion
Aus
<a href="file:///c:\windows">c:\windows</a>
wird in Zeile 5 dynamisch dieses VBScript erstellt
set objShell = CreateObject("Wscript.Shell")
strPath = "file:///c:windows"
strPath = "explorer.exe /e," & strPath
objShell.Run strPath
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile Wscript.ScriptFullName
und dann als data-uri in den ursprünglichen Link eingesetzt. (Zeile 45)
Final sieht das dann so aus:
<a download="openLink.vbs" href="data:application/octed-stream;base64,c2V0IG9ialNoZWxsID0gQ3JlYXRlT2JqZWN0KCJXc2NyaXB0LlNoZWxsIikNCnN0clBhdGggPSAiZmlsZTovLy9jOi93aW5kb3dzIg0Kc3RyUGF0aCA9ICJleHBsb3Jlci5leGUgL2UsIiAmIHN0clBhdGgNCm9ialNoZWxsLlJ1biBzdHJQYXRoDQpTZXQgZnNvID0gQ3JlYXRlT2JqZWN0KCJTY3JpcHRpbmcuRmlsZVN5c3RlbU9iamVjdCIpDQpmc28uRGVsZXRlRmlsZSBXc2NyaXB0LlNjcmlwdEZ1bGxOYW1l" >c:\windows</a>
Klick man nun auf den Link erscheint ein FileDownload der Datei openLink.vbs die man dann am Besten auf dem Desktop ablegt.
Durch Doppelklick auf diese Datei wird dann der gewünschte Pfad oder die gewünschte Datei geöffnet. OpenLink.vbs wird danach automatisch gelöscht, sodass
keine Reste überbleiben.
No Comments