Avatar billede heyn Nybegynder
18. november 2013 - 08:43 Der er 18 kommentarer og
1 løsning

Kan man åbne et window i hidden mode.

Hej Eksperter

Jeg er kommet i den situation at jeg med JavaScript skal overføre nogle data til serveren uden at jeg forlader siden.

Desværre tillader opsætningen af Apache serveren (som jeg ikke har adgang til) kun at man anvender url's på max ca. 500 karakterer, og da mine data til tider er langt større kan jeg ikke anvende window.open().

Jeg forestiller mig at jeg bruger et httprequest og anvender post i forbindelse med json. Det har nemlig fungeret fint i tidligere lignende situationer.

Lige nu anvender jeg en nødløsning hvor der kommer et 'grimt' windue som kortvarigt åbnes for så atter at lukkes med window.close(). Det virker uprofessionelt.

Er det muligt at åbne sider i 'hidden' mode?

Venligst Christian
Avatar billede jakobdo Ekspert
18. november 2013 - 08:54 #1
Hvorfor gør du ikke netop brug af httprequest?
Der kan du "poste" skjult og med post burde du kunne "poste" mere end 500 karakter. Og brugeren vil ikke se et grimt vindue eller noget.
Avatar billede heyn Nybegynder
18. november 2013 - 10:35 #2
Denne gang er mit problem lidt anderledes end tidligere. Denne gang skal der genereres en ny side som skal vises. Ikke som tidligere hvor der bare skulle gemmes på serveren i sqlite.

Siden er på 7x5 cm. jeg henter fra serveren skal udskriver den på en labelprinter.

For at indstille labelprinteren korrekt anvender jeg JsPrintSetup.

De stregkoden og qr-feltet som skal indsættes genereres som 2 billeder med php GD. esuden overføres der en del produktdata. Det er de sidste der ikke er plads til.

Er det muligt udelukkende at hente de 2 billeder (stregkode og qr-felt) og så udskrive en iframe?

Hvis du kender til JsPrintSetup: Kan man indstille JsPrintSetup til  at udskrive denne iframe istedet for hele siden?
Avatar billede heyn Nybegynder
18. november 2013 - 10:39 #3
Der er altså ikke plads hvis jeg anvender window.open().

HVIS jeg kunne anvende et httprequest med metode POST som jeg tidligere har gjort ville det gå fint.
Avatar billede jakobdo Ekspert
18. november 2013 - 10:48 #4
Hvis du skal print, bliver du nød til at åbne et vindue.
Du kan jo angive størrelse på vinduet, når du åbner det.

Prøv f.eks. noget ala denne:
http://www.webmasterorbit.com/window-generator.html

Så åbner du vinduet.
Kalder: window.print() og lukker vinduet bagefter.
Det må være måden at gøre det på.

Alternativt skal du gemme billeder på serveren og have en print-server eller lign, som printer udenom brugeren.
Avatar billede heyn Nybegynder
18. november 2013 - 12:02 #5
Ja - Det var også hvad gjorde i starten. Men så fandt jeg ud af at hvis jeg skulle overføre meget data (via url.) ville den Apache server jeg har adgang til ikke tillade det.

Jeg kan jo lade window.open åbne siden i en iframe.
var obj= {};
obj['stregkode'] = TAL;
obj['QRadr'] = EN_WEBSIDEADR;
var object = JSON.stringify(obj);

window.open('EN_URL?object='+object,'enFrame')

<iframe name="enFrame"></iframe>

Så kan jeg lade siden EN_URL udelukkende indsætte stregkode og qr-felt, men gøre plads til teksten i en
<div id="tilTekst></div>.

Men hvordan får jeg JavaScript til at indføre teksten i iframe'ens <div> efter siden 'EN_URL' er åbnet er åbnet inde i iframe'en?
Avatar billede heyn Nybegynder
18. november 2013 - 12:05 #6
Eller kan <iframe> hente data fra sin perrent?

Som det fremgår er jeg ikke særlig øvet i <iframe> da jeg altid er blevet advaret mod at anvende dem.
Avatar billede jakobdo Ekspert
18. november 2013 - 12:39 #7
Jeg tror du besværliggøre ting.
Alle de data du vil overføre fra side 1 -> side 2, kan du ikke bare gemme dem i din "kode" ?
F.eks. php, aspx eller hvad du nu koder i ?
Avatar billede heyn Nybegynder
18. november 2013 - 15:05 #8
Problemet er at hvis jeg ikke anvender window.open() vil det jeg henter medføre at der åbnes et nyt faneblad/windue som jeg ikke kan kontrollere størrelsen af, og ikke kan skjule.

For jeg ønsker jo netop ikke at indlæse en helt ny side.

Og apache serveren blokerer for lange url's så jeg kan ikke anvende window.open() hvor jeg placerer data som 'get' data i url'en.

Men kan man placere tekst i en iframe efter den er indlæst - og hvordan?

Og vil window.print() i en iframe udelukkende udskrive iframe'en eller vil den stadig udskrive hele siden?
Avatar billede jakobdo Ekspert
18. november 2013 - 15:17 #9
Men forstår ikke problemet, når den skal skjules...
Avatar billede heyn Nybegynder
18. november 2013 - 15:26 #10
Jeg forestillede mig noget i stil med at <iframe> var stylet til 'visibility:hidden'
Avatar billede jakobdo Ekspert
18. november 2013 - 15:31 #11
Så du vil printe et skjult vindue?
Avatar billede heyn Nybegynder
18. november 2013 - 15:32 #12
Men nu jeg tænker over det vil det med en <iframe> have den fordel at jeg kan lave en buttom 'Vis Udskrift'. Det vil brugerne nok være glade for.
Avatar billede jakobdo Ekspert
18. november 2013 - 15:35 #13
Så brugeren skal trykke "vis udskrift" på en skjult iframe ??
Jeg er stået helt af...
Avatar billede heyn Nybegynder
18. november 2013 - 16:18 #14
Nej - Selvfølgelig ikke - Jeg mente at iframe nok skal være synlig alligevel.

Men kan man overhovedet skrive ind i en iframe efter den er indlæst? Noget med child el. lign.?
Avatar billede heyn Nybegynder
19. november 2013 - 13:39 #16
Mange tak for hjælpen - Smid et svar.

Forresten - Husk at stem! - Om ikke andet så blank.
Avatar billede jakobdo Ekspert
19. november 2013 - 13:47 #17
Svar!
Avatar billede jakobdo Ekspert
19. november 2013 - 13:48 #18
Selvom man er blank, kan man vel godt stemme. :o)
Avatar billede jakobdo Ekspert
20. november 2013 - 08:35 #19
Takker for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester