Lokale Dokumente mittels window.open() öffnen (FF/IE)

N0ACE

Mitglied
Schönen guten Morgen zusammen!


Für eine Intranet-Applikation ist es notwendig, Dateien (vorrangig PDFs), welche sich auf einem eingebundenem Netzlaufwerk befinden, in einem neuen Popup zu öffnen.

Mein Code dazu schaut so aus:

Code:
function open_popup(_uri)
{
	// setting width and height for the popup window
	var w = screen.availWidth - 100;
	var h = screen.availHeight - 100;

	// setting other params
	var params = 'width=' + w +
		', height=' + h + 
		', top=50, left=50, ' + 
		', resizable=yes, toolbar=no, location=no, directories=no, menubar=no, scrollbars=yes, status=yes';

	// open the new window which gets the focus
	popup = window.open(_uri, '', params);
	popup.focus();
}

So, nun sieht der Parameter '_uri' wie folgt aus:
Code:
z:/public/foobar.pdf

Im IE funktioniert dies auch so, wie es soll, nur kommt beim Firefox folgende Meldung: "Firefox weiß nicht, wie diese Adresse geöffnet werden soll, da das Protokoll (z) mit keinem Programm verknüpft ist".

Daraufhin habe ich die Links folgendermaßen geändert:
Code:
# vorher
z:/public/foobar.pdf

# nachher
file://z:/public/foobar.pdf

Weiterhin läuft es im IE so, wie es soll. Diesmal kommt im FF keine Meldung, aber auch keine Regung... Firebug meldet folgenden Error: "uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMJSWindow.open]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://intranet/common.js :: open_popup :: line 317" data: no]"


Habt ihr eine Idee, wie ich den lieben Feuerfuchs dazu bekomme, Dateien, welche nicht via HTTP erreichbar sind, in einem Popup zu öffnen? Das kuriose ist ja, dass FF die Datei öffnet, wenn ich
Code:
z:/public/foobar.pdf
direkt in die Adresszeile eingebe, nur eben mittels window.open will er nicht :/


Für Eure Hilfe bedanken ich mich voraus!
 
chmee,

Danke für deinen schnellen Vorschlag!

Der Code ist straight-forward:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>PDF embed</title>
<meta http-equiv="content-language" content="de" />
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<style type="text/css">
#file {
	width:			800px;
	height:			600px;
}
</style>
</head>
<body>
	<embed id="file" src="<?php echo $_GET['file']; ?>" />
</body>
</html>


Ich habe es versucht, hat aber leider auch nicht geholfen:

Fall A) embed src="z:/public/foobar.pdf"
- IE prompt mit der Meldung "Zugriff Verweigert" (kleines Alert-Fenster, welches im Titel "Adobe PDF-Dokument" stehen hat). Danach zeigt er ein weisses Viereck an.
- FF zeigt nur das weisse Viereck an, ohne Fehlermeldung.

Fall B) embed src="file://z:/public/oobar.pdf"
- IE: Selbes Spiel: Fehlermeldung, dann weisses Viereck
- FF: Zeigt diesmal gar nichts an, noch nicht mal das weisse Viereck.
 
War ein bisschen vorschnell :D Wäre genauso ein Einfallstor, wenn man jegliche Files per embed in die Seite einbauen könnte. Deswegen bin ich positiv überrascht, dass beide Browser den Zugriff verhindern.

Eine Sache, die ich grad' gelesen habe : Die Verlinkung auf ein Netzlaufwerk oder lokales Laufwerk ist nicht erlaubt. ergo müsstest Du den Datei/Fileserver irgendwie per url definieren können. Also zB als internen ftp-Server aufsetzen oder -wenn möglich- einen Alias im Webordner zu den Daten erstellen. Somit könntest Du anstatt mit Z:/Daten/2009/foo.pdf mit src="/Daten/foo.pdf" darauf zugreifen. Vielleicht kannst Du einfach per ../ dorthin delegieren.. Ich würde auch in dieser embed-Seite (oder schon davor) den absoluten Pfad zur Datei zeigen, welcher -als Bonus- in den Explorer kopert werden könnte.

Hier noch was zum Lesen : http://www.useit.com/alertbox/open_new_windows.html

mfg chmee
 
Dann könnte man ja lokale Dokumente auch nicht mit Firefox öffnen, oder?

Du musst vor "Z:" "file://" anbringen. Das ist das Format anstatt http.
 
Hat er auch probiert. Fall B.

Die Seiten, die ich bis Dato gefunden habe, sagen alle auch nur Weniges:

zB
Man sollte dem Browser das Weiterleiten zum Viewer mittels eines AddOn überlassen.
Man sollte den User entscheiden lassen, ob speichern oder anschauen.

Ich kann es nachvollziehen, dass es nicht gehen sollte, per Scripting (JS) eine lokale Datei aufzurufen. Wobei ich bei einem Link oder einem Redirect wiederum davon ausgehe, dass der Browser die Entscheidung dem User überlässt, wie zu verfahren ist.

Wie sieht es aus,wenn Du es damit versuchst?

Code:
<?php header($_GET[url]); ?>


mfg chmee
 
Achso sorry.

Wenn ich eine Datei von Xampp mit FF öffne ist bei mir die URL:

file:///C:/xampp/htdocs/index.html

Mit drei "/" !
 
Ich habe erneut alle Varianten geprüft, mit folgenden Link-Schemata:

A) z:/public/foobar.pdf
B) file://z:/public/foobar.pdf
C) file:///z:/public/foobar.pdf

Leider ohne Erfolg: Der IE macht's, der FF nicht.

chmee, auch der Tipp mit
Code:
<?php header($_GET[url]); ?>
hat leider nur zu einer weissen Seite geführt (ohne Fehlermeldungen o.ä.; nur weiss)...
 
Moin,

ich glaube, ihr müsst da nicht weiter mit den Pfaden herumprobieren, chmee's erste Vermutung traf ja den Nagel schon ausreichend auf den Kopf.:-)

Es könnte gehen, wenn man das Skript
1.signiert
2. ihm durch den User erweiterte Rechte erteilen lässt(UniversalFileRead)

probiert hab ich das noch nicht, kann also nicht sagen, ob und wie es funktioniert...eine Beschreibung dazu gibts hier: http://www.mozilla.org/projects/security/components/signed-scripts.html

Auf was für Client-OS muss diese Anwendung denn überhaupt lauffähig sein, gibt es da Einschränkungen?
 
Moin,
Es könnte gehen, wenn man das Skript
1.signiert
2. ihm durch den User erweiterte Rechte erteilen lässt(UniversalFileRead)

probiert hab ich das noch nicht, kann also nicht sagen, ob und wie es funktioniert...eine Beschreibung dazu gibts hier: http://www.mozilla.org/projects/security/components/signed-scripts.html
Werde ich mir mal in Ruhe anschauen, danke! Bisher sagen mir weder signierte Skripte was, noch UniversalFileRead...

Auf was für Client-OS muss diese Anwendung denn überhaupt lauffähig sein, gibt es da Einschränkungen?
Ausschließlich Win XP. Ich selber arbeite zwar von 'nem Mac aus, aber das ist denen ja Wurscht ;)

Und 80% haben den IE7, 15% den IE8 und 5% den IE6. Also auf den 6er kann man getrost pfeifen (Anm.: Juhuu)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück