Avatar billede wzarlon Nybegynder
13. august 2003 - 15:36 Der er 22 kommentarer og
2 løsninger

Printfunktion, hvad mangler?

Hej alle

Jeg sidder og roder med en printfunktion som skal kunne printe mit dynamiske indhold.

Jeg er kommet frem til at bruge denne løsning:

<script>
    var strContent

function print()
{
strContent = document.getElementById("printContent").outerHTML;
var nytWindow = window.open();
nytWindow.document.write(strContent);
nytWindow.focus();
nytWindow.print();
}
</script>

Og det jeg vil have printet har jeg imellem dette div tag <div id="printContent">

Jeg kalder funktionen med <a href="java script:print();">


Det jeg undre mig over er at printningen ikke går igang af sig selv, ved aktivering af java script:print();.
Den åbner fint et nyt vindue, og laver focus på det nye vindue, men printningen starter ikke. (Laver jeg en refresh (F5) så starter den lige bagefter...
Hmmm, hvad gør jeg galt her?
Jeg vil godt undgå activex scripting mm.
Avatar billede mm12010 Nybegynder
13. august 2003 - 15:45 #1
prøv:

function print()
{
strContent = document.getElementById("printContent").outerHTML;
var nytWindow = window.open();
nytWindow.document.write(strContent);
nytWindow.document.close();
nytWindow.focus();
nytWindow.print();
}
Avatar billede roenving Novice
13. august 2003 - 15:48 #2
Du mangler document.close();

function print()
{
strContent = document.getElementById("printContent").outerHTML;
var nytWindow = window.open();
nytWindow.document.write(strContent);
nytWindow.document.close();
nytWindow.focus();
nytWindow.print();
}
</script>

>>mm
Du hører da heller ikke efter !-)
Avatar billede wzarlon Nybegynder
13. august 2003 - 15:49 #3
Tja, det ser sku ud til at virke.. Hvorfor??

Jeg har lige tilføjet en nytWindow.close(); efter print, så den rydder helt op efter print er udført
Avatar billede roenving Novice
13. august 2003 - 15:50 #4
Browseren betragter åbenbart ikke dokumentet som færdiggjort før man afslutter kode-'strømmen' med document.close() ...

-- og velbekomme '-)
Avatar billede wzarlon Nybegynder
13. august 2003 - 15:54 #5
Giv lige svar begge 2, så laver vi en deler af point.

Jeg takker for hjælpen
Avatar billede mm12010 Nybegynder
13. august 2003 - 16:02 #6
øhh ;o) er det ikke lige præcis det jeg gør? eller det nu der skal grines af mig, fordi jeg ikke fangede ironien? for dit forslag er da 100% magen til mit, ikk'?-)
Avatar billede roenving Novice
13. august 2003 - 16:11 #7
Overså det fordi jeg focuserede på focus -- undskyld mm !-)

*g*
Avatar billede mm12010 Nybegynder
13. august 2003 - 16:13 #8
alt forladt ;o)

jeg blev helt tvivl - det er jo ikke mig der taler flydende language="JavaScript" :o)
Avatar billede roenving Novice
13. august 2003 - 16:18 #9
*lol*
Avatar billede wzarlon Nybegynder
13. august 2003 - 19:08 #10
*lol* Good one mm

Tak 4 hjælpen begge 2
Avatar billede wzarlon Nybegynder
13. august 2003 - 19:49 #11
Uhh, kan i her på sidsten lige give mig et hint til.

Jeg vil godt styrer størrelsen af det vindue jeg åbner..

Har prøvet med dette, men det gør ingen forskel:

Kald: <a href="java script:print('0','0');">



<script>
var strContent
function print(win_height,win_width)
  {
  strContent = document.getElementById("printContent").outerHTML;
  var nytWindow = window.open("width="+win_width+",height="+win_height);
  nytWindow.document.write(strContent);
  nytWindow.document.close();
  nytWindow.focus();
  nytWindow.print();
  nytWindow.close();
  }
</script>
Avatar billede mm12010 Nybegynder
13. august 2003 - 23:10 #12
var nytWindow = window.open("","","width="+win_width+",height="+win_height);
Avatar billede roenving Novice
14. august 2003 - 09:31 #13
<a href="java script:print('400','300');">Print</a>

-- de færreste browsere tillader en popup på mindre end 100*100 ...
Avatar billede wzarlon Nybegynder
14. august 2003 - 09:36 #14
Tillader?.. Jamen jeg vil! :o)

Ok.. Kan man ikke lave et skjult vindue med printindholdet i? Evt. en dialogboks eller andet.

Eller kan man minimize et nyåbnet vindue, og stadig bevare focus på det?

En eller anden måde skal det være muligt
Avatar billede wzarlon Nybegynder
14. august 2003 - 09:40 #15
Ok..Jeg dropper det. Kører den i 800*600 istedet.

Sidste sidste ting.. Kan jeg på en eller anden måde give det nye vindue en title?
Avatar billede mm12010 Nybegynder
14. august 2003 - 09:45 #16
var nytWindow = window.open("width="+win_width+",height="+win_height);
nytWindow.document.title="vinduets titel";
Avatar billede roenving Novice
14. august 2003 - 10:11 #17
Den klassiske løsning for et skjult printervindue er at have en (i)frame, som også er et window-objekt.

En iframe kan du sagtens give display:none; og på den måde have det fuldstændigt udenfor det brugeren ser -- den kan godt nok være lidt svær at skrive i, men det gøres på præcis samme måde som med popup'en:

<iframe name="Karl" id="Karl" src="about:blank" style="display:none;">Bøhhh</iframe><br>

<script language="javascript" type="text/javascript">
function print()
  {
  var strContent = document.getElementById("printContent").outerHTML;
  Karl.document.write(strContent);
  Karl.document.close();
  Karl.focus();
  Karl.print();
  }
</script>
Avatar billede wzarlon Nybegynder
14. august 2003 - 10:13 #18
Kanon..Tak til jer begge. Nu har jeg lidt at arbejde videre iaften med når det "normale" job er overstået :o)

Javascript ruler!
Avatar billede roenving Novice
14. august 2003 - 10:19 #19
-- lige een ting ...

Kald din funktion noget andet end print !-)

Da den native print-funktion er et barn af window *kan* du i visse tilfælde få problemer ved at bruge det samme navn til din egen funktion, som jo umiddelbart vil være barn af document, men f.eks. fra andre frames vil kaldes uden at der vil være forskel ...

-- fortolkeren kan kun blive forvirret !o] -- og så plejer den at gøre ingenting ...
Avatar billede wzarlon Nybegynder
14. august 2003 - 11:03 #20
Nå ja for satan.. Så er det sku derfor den gik helt agurk igår. Prøvede at rette til både til IE og Netscape.

If netscape then print();
If IE then nytwindow.print();

Den spamåbnede 10-20 vinduer på få sekunder. (Ik så smart på Novo Nordisk's netværk :o)  )

Men jeg har åbenbart kaldt min funktion print inde fra selve funktionen *slap self*
Avatar billede roenving Novice
14. august 2003 - 11:12 #21
tjah, hvad kan man sige ... 'Boller fra *** !-)'
Avatar billede wzarlon Nybegynder
14. august 2003 - 11:13 #22
:)
Avatar billede wzarlon Nybegynder
14. august 2003 - 11:13 #23
man lærer så længe man lever
Avatar billede roenving Novice
14. august 2003 - 11:15 #24
-- generelt vil jeg da anbefale, at selvom man skal give sigende navne, så undgår man navne, som findes i forvejen ...

-- f.eks. vil man kun i helt specielle situationer få problemer med at kalde en form for 'form' -- *men lad være* alligevel !-)
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Azure Architect

Udviklings- og Forenklingsstyrelsen

Erfaren Product Owner (PO) til digital gældsinddrivelse

Netcompany A/S

Software Developer