[js]popup 'onzichtbaar' maken

Pagina: 1
Acties:

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Met behulp van een topic in dit forum ben ik op deze code gekomen om een deel van een pagina uit te kunnen printen:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function printInhoud(el)
{
    objContent  = document.getElementById(el);
    var winl = (screen.width - 100) / 2;
    prop = 'height=40,width=100,top=100,left='+winl+',scrollbars=no,resizable=yes,toolbar=no,location=no,status=no';
    var PrintWin = window.open('','pw',prop);
    with(PrintWin.document)
    {
        open();
        write(objContent.innerHTML);
        close();
    }
    PrintWin.blur();        // werkt niet
    PrintWin.print();
    PrintWin.close();
}


Als ik een divje zet om het gedeelte wat ik wil uitprinten en die een bepaalde id geef, dan kan ik die id naar deze functie gooien en die opent dan een popupje met de html-code binnen dat divje en activeert een print-dialogue zodat de boel kan worden uitgeprint (of geanulleerd) en vervolgens wordt de popup ook weer automatisch afgesloten.

Ik zou het alleen wat netter vinden als de popup naar de achtergrond verdween, of geminimaliseerd werd, zodat je niet een klein raar popupje in beeld ziet. De popup extreem klein maken is dus geen optie, want dan blijf je 'm zien. Wat ik verder al geprobeerd heb is die PrintWin.blur(), of de pagina die 'm opent te focussen (op de plek waar de blur nu staat), maar dat lukt allemaal niet.

Iemand enig idee hoe het wel kan?

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Zet de x-coordinaat op 10000?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Niet PrintWin.blur(), maar opener.focus? :)

Een window blurren plaatst hem natuurlijk niet ineens achter andere schermen. Je hoofdscherm naar de voorgrond halen heeft dan meer effect.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

kan je niet gewoon een media="print" stylesheet eraan hangen en met js wat classNames switchen om alleen een gedeelte van de pagina te printen? (niet getest, maar zou theoretisch moeten kunnen lijkt me)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

André schreef op 14 juni 2004 @ 09:10:
Zet de x-coordinaat op 10000?
Dat kan niet. JS heeft security safeguards ingebouwd. Je kunt een geopend window niet:
• Buiten het scherm plaatsen
• Kleiner maken dan 100x100
• nog wat dingen...

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
André schreef op 14 juni 2004 @ 09:10:
Zet de x-coordinaat op 10000?
Dat werkt niet (iig niet in Mozilla en dat vind ik toch het belangrijkst)
Bosmonster schreef op 14 juni 2004 @ 09:37:
Niet PrintWin.blur(), maar opener.focus? :)

Een window blurren plaatst hem natuurlijk niet ineens achter andere schermen. Je hoofdscherm naar de voorgrond halen heeft dan meer effect.
Dat heb ik al geprobeerd (zoals ik ook in m'n openingspost aangaf). Maar omdat de js-code in de opener staat heb ik dat dus niet met opener.focus() gedaan, maar met self.focus() - maar misschien dat ik dat niet op een correcte manier toepas zo?
Clay schreef op 14 juni 2004 @ 09:53:
kan je niet gewoon een media="print" stylesheet eraan hangen en met js wat classNames switchen om alleen een gedeelte van de pagina te printen? (niet getest, maar zou theoretisch moeten kunnen lijkt me)
Hmm...nou, ik heb flink gezocht met de search naar een oplossing voor het printen en dit is eigenlijk de enige werkende die ik tegenkwam. Misschien dat het wel kan, maar op dit moment zoek ik liever nog even naar een oplossing om het popupje onzichtbaar te maken dan dat ik het roer radicaal omgooi.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Verwijderd schreef op 14 juni 2004 @ 10:23:
[...]


Dat kan niet. JS heeft security safeguards ingebouwd. Je kunt een geopend window niet:
• Buiten het scherm plaatsen
Oh?

En dit dan:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
  <head>
    <title>Test</title>
    <script type="text/javascript">
      function Spring()
      {
        window.moveTo(10000, 0);

        setTimeout("window.moveTo(0, 0)", 5000)
      }
    </script>
  </head>
  <body onload="Spring()">
  </body>
</html>

[ Voor 16% gewijzigd door André op 14-06-2004 11:08 ]


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Hmm...nou, ik heb flink gezocht met de search naar een oplossing voor het printen en dit is eigenlijk de enige werkende die ik tegenkwam.
't zou saai zijn als er nooit wat nieuws bedacht werd :P toch?

testje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
    <title> Project </title>
    <style type="text/css">
    
    p {
        width:500px;
        font-family:arial,tahoma,verdana;
        font-size:12px;
    }

    @media print {
        p { display:none; }
        p.print {
            display:block;
        }
    }

    </style>
    <script type="text/javascript">

    function printThisOne(id) {
        document.getElementById(id).className = 'print';
        alert('ok, doe nu eens print-preview?')
    }

    </script>

</head>

<body>
    
    <p id="para1">
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
        Ut venenatis. Aliquam pulvinar mauris eu mauris. Duis nec eros. 
        Fusce sit amet mauris et turpis varius facilisis. 
        <a href="#" onclick="printThisOne('para1')">print alleen deze</a>.
    </p>

    <p id="para2">
        In viverra massa. Sed eget velit. Duis aliquet hendrerit turpis. 
        Fusce wisi ligula, pharetra non, sagittis vitae, pellentesque 
        ornare, nulla. Sed elit metus, feugiat vel, ullamcorper ac, 
        porttitor eget, erat. 
        <a href="#" onclick="printThisOne('para2')">print alleen deze</a>.
    </p>

</body>
</html>

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Hmz, dit is raar. CSS3 heeft de :target selector waarmee je hetzelfde zonder js zou moeten kunnen doen ala:

code:
1
2
3
4
5
6
@media print {
    p { display:none; }
    p:target {
        display:block; 
    }
}


met gewone links:

code:
1
<a href="#para1">print alleen deze</a>


maar dat werkt niet in print media mode :? (wel in screen media) Nou valt er misschien wat voor te zeggen dat je in printmode geen #'s target... maar toch.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Hmm...
Verwijderd schreef op 14 juni 2004 @ 10:23:
Dat kan niet zou niet moeten kunnen.
;)
JavaScript - the definitive guide
A script cannot open a window that is smaller than 100 pixels on a side or cause a window to be resized to smaller than 100 pixels on a side. Similarly, such a script cannot move a window off the screen, or create a window that is larger than the screen..
Ik heb je script niet getest. Maar het zou dus niet moeten werken.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Verwijderd schreef op 14 juni 2004 @ 13:26:
[...]

Hmm...
[...]

;)

[...]

Ik heb je script niet getest. Maar het zou dus niet moeten werken.
Ik heb het wel getest en het script doet het wel in IE, in firefox kun je bij de opties uitschakelen dat JS iets aan je window doet. :)

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
André schreef op 14 juni 2004 @ 15:03:
[...]

Ik heb het wel getest en het script doet het wel in IE, in firefox kun je bij de opties uitschakelen dat JS iets aan je window doet. :)
Dat klopt, maar dat wil nog niet zeggen dat hij 'm ook buiten de max.toegestane coördinaten verplaatst. Met jouw stukje script verplaatst firefow de window inderdaad, maar hij blijft netjes rechtsboven beeld steken. En da's nou net wat ik niet wil...
Clay schreef op 14 juni 2004 @ 11:54:
[...]


't zou saai zijn als er nooit wat nieuws bedacht werd :P toch?

testje:
code:
1
knip
Jah, da's opzich wel een leuk script en daar heb ik wel aan gedacht, maar de reden dat ik dat liever niet zo implementeer is dat het stukje dat ik wil printen op een pagina zit die achter een login-gebeuren zit en er 1 van de vele is. Uiteraard werk ik dus met een hoop standaard files die ik dan ook allemaal moet gaan aanpassen en dan worden automatisch de overige pagina's ook aangepast zodat ik dat ene kleine ***stukje kan uitprinten. Of ik moet uitzonderingen in m'n code gaan schrijven dat ie dit alleen voor die pagina doet, maar dat vind ik nou ook niet echt dat je zegt ....
Het liefst los ik het dus alleen binnen die pagina op

(wat me dus nog steeds niet helemaal gelukt is)

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
iemand toevallig nog een idee hierover?

- blurren van de popup lukt niet
- met self.focus() heb ik geprobeerd de pagina die de popup veroorzaakt na die handeling weer op de voorgrond te krijgen. Dit lukt niet
- buiten het beeldscherm plaatsen lukt niet
- oplossing van clay (zie hierboven) is ook geen oplossing zoals ik in m'n voorlaatste post aangeef

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 00:12

SinergyX

____(>^^(>0o)>____

[noob]
Ik heb ooit gewerkt met een extra frame (size 0), waarheen de vars werden geschreven, dit dus ipv een popup, qua code weet ik niet meer hoe et werkte :P
[/noob]

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.

Pagina: 1