×
Vytvárame riešenia

Tipy a triky - ako automaticky otvoriť dokument (JavaScript/Dojo)

17.5.2013, Matej LednárKategória: Dojo
Pri tvorbe webových aplikácií je niekedy potrebné automaticky otvoriť dokument bez interakcie používateľa. Túto funkcionalitu je možné vykonať viacerými spôsobmi. V tomto článku sú predstavené dve základné techniky.


Prvý spôsob otvorenia dokumentu je prostredníctvom metódy open(). Táto metóda ale nemusí byť podporovaná všetkými prehliadačmi, resp. z bezpečnostného hľadiska môže byť otvorenie okna blokované buď internetovým prehliadačom alebo niektorou z bezpečnostných aplikácií.
Príklad: Otvorenie dokumentu prostredníctvom JavaScriptu a DOM.
1
2
var uri = "document.pdf";
window.open(uri, "_blank");
Z dôvodu reštrikcií, ktoré môžu ovplyvňovať použitie metódy open() je možné použiť nasledujúci postup. Vytvorenie elementu <a>, ktorý bude mať atribút style s hodnotou display: none; s odkazom na dokument, programatické kliknutie na vytvorený element a nakoniec jeho odstránenie. Uvedený postup je demonštrovaný na frameworku Dojo.
Príklad: Otvorenie dokumentu prostredníctvom frameworku Dojo.
1
2
3
4
5
6
7
8
9
10
11
12
13
require(["dojo/ready", "dojo/dom-construct", "dojo/dom",
"dojo/_base/window"],
function(ready, construct, dom, win) { ready(function() {
var uri = "document.pdf";
var fragment = "<a href='" + uri +
"' style='display: none;'" +
" id='tmpOpenDocument'>" +
"</a>";
construct.place(fragment, win.body(), "after");
dom.byId("tmpOpenDocument").click();
dom.byId("tmpOpenDocument").remove();
});
});

Záver

Okrem frameworku Dojo je možné daný postup rýchlo aplikovať aj s frameworkom jQuery. Rovnako je možné aplikovať daný postup aj priamo cez JavaScript a DOM, no v tomto prípade pôjde o rozsiahlejší programový kód.
DojoJavaScriptdojoprogramovanie
Žiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.
Viac informácií nájdete v sekcii O projekte.

Komentáre

Článok neobsahuje zatiaľ žiadne komentáre.

Pridať komentár

Meno (povinné)
Web
Správa (povinné)
Napíš výsledok: 3+4-8  
Odoslať
Od najnovších