Seite 1 von 1

Wie lokale HTML-Datei mit Hash im Standard-Browser öffnen?

Verfasst: 07.12.2015 18:53
von NicTheQuick
Hallo Leute,

es ist ja bekannt, dass man beliebige URLs ganz einfach per RunProgram im Standardbrowser öffnen kann:

Code: Alles auswählen

RunProgram("http://www.purebasic.fr/german/viewtopic.php?p=333782#p333782")
Leider scheint das nicht mit lokalen HTML-Dateien zu funktionieren.

Code: Alles auswählen

RunProgram("file://C:\Users\Nicolas\Documents\Purebasic\testhash.html#bla")
Dabei enthält "testhash.html" folgendes:

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
        (function () {
            "use strict";
             function go() {
                alert(window.location.hash.substr(1));
            }
            window.onload = go;
        })();
    </script>
    <title>Hash-Test</title>
</head>
<body></body>
</html>
Öffnet man einen leeren Tab im Browser und öffnet "file:///C:/Users/Nicolas/Documents/Purebasic/testhash.html#bla", erscheint ein 'alert()' mit dem Inhalt "bla". 'RunProgram()' sollte eigentlich das selbe machen, tut es aber nicht. Irgendjemand eine Idee?
Aktuell brauche ich das vorwiegend für Windows und es sollte mit allen gängigen Browsern gleich gut funktionieren. Für Linux werden ich selbst eine Lösung finden, falls es das Problem dort auch gibt.

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 07.12.2015 19:59
von Nino
Hallo,

der folgende Code funktioniert hier, d.h. es erscheint ein 'alert()' mit dem Inhalt "bla"
(Windows 10, PB 5.40, Firefox 42.0):

Code: Alles auswählen

prog$ = "firefox"
RunProgram(prog$, "file:///C:/Users/Nino/Desktop/testhash.html#bla", "")
Ich weiß, das ist noch nicht ganz das was Du willst. Aber evtl. kannst Du die erste Zeile ersetzen durch sowas wie

Code: Alles auswählen

prog$ = FindAssociatedProgram("C:/Users/Nino/Desktop/testhash.html")
s. http://www.purebasic.fr/german/viewtopi ... 92#p282092

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 12:01
von NicTheQuick
Ja, das ist schon mal gut. Interessant wäre jetzt noch herausfinden zu können, welches Programm für das HTTP-Protokoll zuständig ist.
So funktioniert es schonmal nicht.

Code: Alles auswählen

Debug FindAssociatedProgram("http://google.de")
Das heißt die Funktion orientiert sich tatsächlich nur an der Dateiendung, nicht am Protokoll. Es ist zwar unwahrscheinlich, dass für HTML und HTTP unterschiedliche Programme eingestellt sind, aber man weiß ja nie so genau. ;)

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 12:10
von RSBasic
Dann musst du das auslesen: HKEY_CLASSES_ROOT\http\shell\open\command\

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 17:17
von Nino

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 19:56
von chi

Code: Alles auswählen

#ASSOCSTR_COMMAND  = $1
#ASSOCF_ISPROTOCOL = $1000;

pcchOut = #MAX_PATH
pszOut$ = Space(pcchOut)

If AssocQueryString_(#ASSOCF_ISPROTOCOL, #ASSOCSTR_COMMAND, @".html", @"open", @pszOut$, @pcchOut) = #S_OK
	RunProgram(ReplaceString(pszOut$, "%1", "file:///C:/Users/Nicolas/Documents/Purebasic/testhash.html#bla"))
EndIf

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 20:05
von Derren
Das ist kein Hash. Das ist ein Anker. Wenn du das Symbol meinst, dann wäre das Raute, oder (Doppel-)kreuz.
Könnte vielleicht zu Verwirrung führen, bei Leuten die das Wort Hash nicht nur von Twitter kennen. :)

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 20:19
von NicTheQuick
Im Englischen nennt man es oft Hash Mark, siehe auch Wiki. Im deutschen spricht man eher von einem Anker, das stimmt. Nichsdestotrotz greift man in Javascript über 'window.location.hash' drauf zu. Hauptsächlich deswegen rede ich dauernd von Hash. ;)

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 22:03
von Nino
Derren hat geschrieben:Das ist kein Hash. Das ist ein Anker.
Nein, das ist kein Anker.
Ein Anker ist ein Sprungziel innerhalb eines HTML-Dokuments.
Mit Hilfe des Zeichens # kann man Hyperlinks konstruieren, die auf Anker verweisen.
Das Zeichen selbst heißt übrigens "Gartenzaun" *. :D

* spätestens seit "MS-DOS mühelos"

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Verfasst: 08.12.2015 22:28
von NicTheQuick
Ist ja jetzt auch egal. Zurück zum Thema bitte.