Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Problemi di stampa e di Netscape

    Ciao a tutto il forum,

    Ho un problemino da sottoporvi, sto implementando una stampa di una pagina html di un sito in costruzione.

    Il problema e' che cio' che devo stampare risiede in un frame mentre il bottone che andra' a scatenare la routine di stampa deve risedere in un secondo frame.

    Una soluzione, quella di immettere la funzione di stampa nel frame desiderato e di richiamare la stessa dall'altro frame con l'ordine "top.frame.stampa()", non e' praticabile perche' il frame da stampare e soggetto a venire inserito da una persona che non sa programmare e che quindi non è in grado di inserire cose per lui strane quanto una routine javascript.

    l'unica alternativa che mi rimane e' inserire la routine di stampa nel primo frame e fare in modo che stampi il secondo, ho trovato in html.it il seguente esempio.

    <script language="javascript">
    <!--
    function Stampa() {
    parent.principale.focus();
    window.print();
    }
    //-->
    </script>

    Ma c'e' un problema, funziona con netscape?? Io penso di no! Ho provato la modifica sulla routine che uso per stampare ma netscape ignora il comando aggiuntivo e continua a stampare il frame errato.

    C'e' qualcuno che sa darmi una dritta?

    Ciao e grazie a tutti
    --
    Bye by AFo

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    sicuro non fosse scritto
    parent.principale.focus();
    parent.principale.print();
    ?

  3. #3
    Ciao Xinode,

    Ti ribadisco, la funzione era proprio quella che ti ho scritto, l'ho trovata in Pro Html.it nella sezione: "Come gestire i frame con JavaScript" che ti riporto sotto.

    function Stampa() {
    parent.principale.focus();
    window.print();
    }

    Comunque fosse anche cio' che mi suggerisci come potrei integrarlo nella funzione??

    Per brevità te la riporto qui sotto!

    var NS = (navigator.appName == "Netscape");
    var VERSION = parseInt(navigator.appVersion);

    function stampa(){
    if (VERSION > 3) {
    if (NS) {
    window.print();
    } else {
    var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
    document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
    WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = "";
    }
    }
    }

    questo script di per se funziona, ma non riesco a dirigere la stampa nel frame che voglio io, perlomeno con Netscape perche' penso che explorer non abbia problemi di sorta, dovrebbe bastare l'espressione "parent.principale.focus();" per ottenere cio' che desidero.

    Ringrazio!
    --
    Bye by AFo

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    ma...

    hai provato?

  5. #5
    Ciao Xinode,

    La prova l'ho fatta inserendo lo statement appena dopo il costrutto }else{. :sgrat:
    --
    Bye by AFo

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Franco,
    prova così
    ...
    if (NS) {
    parent.nomeFrame.focus();
    parent.nomeFrame.print();
    } else {
    ...

    Xinod

  7. #7
    Eureka!!! :mavieni:
    --
    Bye by AFo

  8. #8
    Ciao xinod,

    ti disturbo ancora, lo stratagemma che mi hai suggerito ha funzionato egregiamente, ma e' il posto che lo hai inserito che mi sta meravigliando, se il comando per netscape si trova in quel posto, dove prende lo stesso comando explorer??, e poi quelle ulteriori righe sotto al costrutto "}else{" a cosa servono allora??

    Scusami se insisto ma non sto capendoci tanto ed io cerco di avere sempre ben presente cio che fanno le routines che uso,

    ti ringrazio ancora.
    --
    Bye by AFo

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    confidavo nel fatto che proprio perchè l' avevi inserito sapessi quello che faceva,
    il risultato è cercare di lanciare la stampa (aprendo il solito pannello) anche con IE4, che non supporta bene il window.print()

    resta il dubbio del perchè controllare se è netscape il browser,
    dal momento che è IE (e x di + solo la pressocchè estinta vers 4) ad aver bisogno di comandi non standard
    probabilmente lo script è molto vecchio, la casistica prima obbligava alla sintassi IE4 only e il panorama dei browser non oltreppassava il duopolio IE/NN

    se ti interessa mantenere questa retro-compatibilità
    (che cmq non credo stamperebbe il frame corretto)
    sicuramente non sbagli a sniffare solo IE4
    codice:
    function stampa(){
    if(navigator.userAgent.indexOf('MSIE 4')>-1){
    var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; 
    document.body.insertAdjacentHTML('beforeEnd', WebBrowser); 
    WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box WebBrowser1.outerHTML = ""; 
    } 
    else {
    parent.principale.focus(); 
    parent.principale.print(); 
    }
    }
    ma, parliamoci chiaro, al giorno d' oggi non sarebbe da lapidazione scegliere la via + lineare della sola sintassi crossbrowser
    function stampa(){
    parent.principale.focus();
    parent.principale.print();
    }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.