Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Odkaz z HTML na spuštění exe přes javascript

Dobrý den,
potřeboval bych radu od javascript guru.

Potřebuji na intranetu v lokální síti z html stránky otevírat poměrně rozsáhný pdf soubor na konkrétní stránce.

V Internet Exploreru to problém není a odkaz

<a href="dokument.pdf#page=562">Otevři na straně 562</a>

při povolení "Úpravy - Předvolby (CTRL-K) - Internet - zaškrtnout položku Zobrazit PDF v prohlížeči" v AdobeReader funguje.

Problém je ve firefox.
Našel jsem řešení, jak otevřít exe v firefox bez ActiveX z HTML včetně parametru. Funguje to ale pouze tehdy, když je v parametru pouze název otevíraného pdf a není tam řetězec

"/a \"page=562\" "+

S tímto řetězcem to končí chybou "Název souboru či adresáře nebo jmenovka svazku je nesprávná". Přímý odkaz na požadovanou stránku, který potřebuji do JS zadat, má tvar

"C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe" /A "page=562" dokument.pdf

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
<script type="text/javascript">
function RunExe()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

var exe = window.Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
exe.initWithPath("C:\\Program Files\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe");

var run = window.Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess);
run.init(exe);

var parameters = ["/a \"page=562\" "+"C:\\Users\\user\\Desktop\\dokument.pdf"];
// var parameters = ["C:\\Users\\user\\Desktop\\dokument.pdf"];   // toto funguje, pdf se otevře, ale nezobrazí požadovanou stranu protože není zadaná
run.run(false, parameters,parameters.length);
}
</script>
</head>
<body>
<a href="#" onclick="javascript:RunExe();">strana 562</a>
</body>
</html>

Můžete mi prosím někdo poradit, jak tam ten parametr dostat, aby to bylo funkční?

Děkuji.

Předmět Autor Datum
Tak to naštěstí není možný.
Wikan 27.03.2012 16:05
Wikan
Mám za to, že javascript neumí pracovat se soubory (až na vyjímky jako cookie nebo třeba zobrazení o…
ERASER 27.03.2012 16:24
ERASER
V IE to fungovat nemůže, tam se používá pro tento účel ActiveX. To ale není třeba, protože v IE fung…
yorg 28.03.2012 07:17
yorg
Je nepochopiteľné jak nekoho múže toto napadnúť, absolútne popretie bezpečnosti. 20 rokov sa plátaj…
Joseph 27.03.2012 16:47
Joseph
Možná by příště chtělo před podobným odsudkem přečíst to, co bylo napsáno hned ve druhé větě. Vzhled…
yorg 28.03.2012 07:23
yorg
Asi se mnou nebudeš souhlasit, ale pro prohlížeč je jedno jestli je to v lokální síti nebo na intern…
ERASER 28.03.2012 13:03
ERASER
Náš pravdu, Nesouhlasím. Neřeším prioritně bezpečnost, ani to, jestli to je nebo není na intranetu (…
yorg 28.03.2012 14:27
yorg
IP adresy ve firmě jsou navíc z bezpečnostního důvodu výhradně statické (nejsou přidělované přes DHC…
ms 28.03.2012 18:58
ms
Potřebuji na intranetu v lokální síti z html stránky otevírat poměrně rozsáhlý pdf soubor na konkrét…
ERASER 28.03.2012 19:28
ERASER
Potřebuji na intranetu v lokální síti z html stránky otevírat poměrně rozsáhlý pdf soubor na konkrét…
ms 28.03.2012 13:25
ms
K první části - viz odpověď výše. Ke druhé části zopakuji - Nemám-li co poradit, raději mlčím.
yorg 28.03.2012 14:29
yorg
Ehm, je to vaše věc, stačí když vás i s Kalouskem a hromadou dalších živíme!
ms 28.03.2012 18:50
ms
Šikula, umí klikat. Naštěstí ale existují i lidé, kteří umí kromě klikání i poradit. poslední
yorg 29.03.2012 10:46
yorg
Ziaden normalny prehliadac ti nespusti exe ani keby si sa pokrajal, ptz to je jedna zo zakladnych be…
MM.. 28.03.2012 19:37
MM..
Nemusím se krájet ale spustí. Pro FF funguje skript doplněný díky radě losa. Plugin jsem z tohoto d…
yorg 29.03.2012 10:43
yorg
Pokud netrváte na otevření Acrobat Readeru, ale stačí otevřít manuál v prohlížeči v iframe, tak by m…
hvězd 28.03.2012 19:49
hvězd
Parametre nemáš posielať všetky v jednom reťazci, ale majú byť normálnymi prvkami toho poľa paramete…
los 28.03.2012 20:23
los
Přesně tuto odpověď jsem potřeboval. Děkuji. Funguje to.
yorg 29.03.2012 10:39
yorg

Mám za to, že javascript neumí pracovat se soubory (až na vyjímky jako cookie nebo třeba zobrazení obrázku).
Mě ten tvůj kód nefungoval ani v IE (verze 9 a 8).

Teoreticky kdyby fungoval, tak co když bude na pc jiná verze než 10.0?

"C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe" /A "page=562" dokument.pdf

Nebo různé druhy prohlížečů různých verzí?
Promiň ale nic mě nenapadá, nejsem javascriptový guru :.(.

V IE to fungovat nemůže, tam se používá pro tento účel ActiveX. To ale není třeba, protože v IE funguje odkaz s #page=562. Toto je speciální kód pouze pro Firefox.

Příkaz

"C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe" /A "page=562" dokument.pdf

je vzorem zástupce (link), jak pdf na konkrétní stránce otevřít.

Možná by příště chtělo před podobným odsudkem přečíst to, co bylo napsáno hned ve druhé větě. Vzhledem k tomu, že příspěvek byl dlouhý a patrně nebylo možné ho celý přečíst, tak to zopakuji.

Potřebuji na intranetu v lokální síti z html stránky otevírat poměrně rozsáhlý pdf soubor na konkrétní stránce.

A aby to bylo jednodušší přečíst a pochopit, tak jsem si dovolil podstatné zvýraznit.

Takto to je jen příspěvek proto, aby byl. Nebo lépe, spíše vzor toho, jak by odpověď vypadat neměla. Vzhledem k tomu, že se tento web jmenuje poradna, tak by mělo být pravidlem Nemám-li co poradit, raději mlčím.

Náš pravdu, Nesouhlasím. Neřeším prioritně bezpečnost, ani to, jestli to je nebo není na intranetu (i když to na něm běží). Řeším jen a pouze problém s Javascriptem.

Jinak pro to, abych tuto planou diskuzi utnul se trošku více rozepíšu.

Ten Intranetový server běží na jednom z počítačů v kanceláři na W7 pod IIS 7.5. Pro neznalé, co to IIS je, první nalezený odkaz s postupem instalace IIS. V IIS jsou výčtem uvedené povolené IP adresy. Takže pouze z nich se k tomu html někdo dostane. IP adresy ve firmě jsou navíc z bezpečnostního důvodu výhradně statické (nejsou přidělované přes DHCP) a celá počítačová síť je chráněna firewallem, který nespravuje nějaký Tomáš Marný, ale stálá služba 24/7. A ten PDF dokument je asi 2000 stránkový manuál, do kterého se poměrně často leze. A proto, aby bylo možné se v něm lépe orientovat, byl obsah naskenován a byla z něho vytvořená html stránka, která funguje v IE. Jeden kolega ale nemá z nějakého důvodu IE rád a používá výhradně FF. A protože jsme kolegové a ne protivníci, tak jsem mu chtěl použití ulehčit.

Takže ještě jednou, neřeším bezpečnost (protože ji vzhledem k uvedenému ani řešit nemusím), ale řeším problém s javascriptem. Proto bych tuto nesmyslnou debatu o bezpečnosti rád ukončil a poprosil někoho znalého javascriptu o sdělení (bez IMHO popřípadě neurčitého slůvka naštěstí), zda to skutečně nejde nebo se jedná "jen" o nesprávný způsob zápisu.

V případě, že to skutečně nejde, tak náhradní řešení ze zástupcem "C:\Program Files\Internet Explorer\iexplore.exe" manual.html funguje, jen se kolega bude muset s tím modrým ečkem IE nějak smířit.

IP adresy ve firmě jsou navíc z bezpečnostního důvodu výhradně statické (nejsou přidělované přes DHCP) a celá počítačová síť je chráněna firewallem, který nespravuje nějaký Tomáš Marný, ale stálá služba 24/7

Skvělé! Teď jsem zcela bez obav třeba o osobní údaje spravované Ministerstvem financí České republiky v čele s Kalouskem! Kdekoliv jinde je to zaměstnavatel, který vybírá aplikační software, nikoliv zaměstnanec!

Potřebuji na intranetu v lokální síti z html stránky otevírat poměrně rozsáhlý pdf soubor na konkrétní stránce.

Neřeším prioritně bezpečnost, ani to, jestli to je nebo není na intranetu.

Nějak to nedává smysl :-|

Potřebuji na intranetu v lokální síti z html stránky otevírat poměrně rozsáhlý pdf soubor na konkrétní stránce.

Aby to bylo jednodušší: intranet je takový Internet v malém! Spustit skrze webový prohlížeč spustitelný soubor je bezpečnostní díra jak vrata!
Co se týče lokálních sítí, pak větší nebezpečí pro jednotlivé stanice jsou jiní klienti v síti, než útok ze sítě Internet.

Vzhledem k tomu, že se tento web jmenuje poradna, tak by mělo být pravidlem Nemám-li co poradit, raději mlčím.

Ano, aneb jinak: "Chci mermomocí v podstatě provést úspěšně útok na jinou síťovou stanici v lokální síti a komu se to nezdá, nechť laskavě drží hubu!"

Ziaden normalny prehliadac ti nespusti exe ani keby si sa pokrajal, ptz to je jedna zo zakladnych bezpecnostych vlastnosti prehliadaca.

O zobrazenie pdf v okne FF sa stara adobe plugin, jake ma moznosti otvarania na konkretnej stranke neviem, skus googlit. Ale takymto sposobom (otvaranim pdf na stranke ked mal adobe dieru v readeri) sa istu dobu siril dost nebezpecny vir, tak by som sa necudoval keby to nefungovalo, a bolo by to len a len dobre. Ale mozno nejaky sposob na to je.

Nemusím se krájet ale spustí.

Pro FF funguje skript doplněný díky radě losa. Plugin jsem z tohoto důvodu zatím nezkoušel, ale je to dobrá rada, díky za ní.

Pro IE funguje skript využívající ActiveX.

Parametre nemáš posielať všetky v jednom reťazci, ale majú byť normálnymi prvkami toho poľa parameters. Takže vytvorenie poľa parameters by malo vyzerať takto:

var parameters = ["/a", "page=562", "C:\\Users\\user\\Desktop\\dokument.pdf"];

Zpět do poradny Odpovědět na původní otázku Nahoru