JS + print() + Opera

Тема в разделе "Другие языки", создана пользователем Axom, 23 май 2011.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Axom

    Axom

    Регистр.:
    25 апр 2007
    Сообщения:
    320
    Симпатии:
    94
    Есть код:
    HTML:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Печать</title>
    </head>
    <script type="text/javascript">
    function printer()
    {
        my_window = window.open("", "Печать", "menubar=0,width=350,height=150");
        my_window.document.write('Печатуемый текст');
        my_window.print();
        my_window.close();
    }
    </script>
    <body>
    <a href="#" onclick="javascript: printer()">Печать</a>
    </body>
    </html>
    При нажатии на "Печать" во всех браузерах появляется popup окно и окно печати.
    Но в опере окно печати не появляется. Уже всё перепробовать, но добиться чтобы в ней отрывалось popup и печатался текст "Печатуемый текст" так и не получилось.
    Помогите кто может! :)
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    в опере тоже все отлично появляется
    просто ты это popup -окно сразу закрываешь
    my_window.close();
    и наверно не успеваешь заметить его появление

    короче убей ту строчку
     
  3. Axom

    Axom

    Регистр.:
    25 апр 2007
    Сообщения:
    320
    Симпатии:
    94
    Версия оперы и какая ос?

    Ты точно проверял?
    Сори, но ты глупость написал. Потому что окно на печать появляется перед закрытием окна, т.е. не даёт ему закрыться, пока не закроется окно печать. Проверено на 100%.
     
  4. karapet

    karapet

    Регистр.:
    9 сен 2008
    Сообщения:
    168
    Симпатии:
    104
    Если оставить весь код как у тебя, то окошко появляется и тут же закрывается. Если же убрать строку как выше посоветовал chang, то окно остается...

    [​IMG]


    [​IMG]
     

    Вложения:

    • print.jpg
      print.jpg
      Размер файла:
      20,1 КБ
      Просмотров:
      20
    • print2.jpg
      print2.jpg
      Размер файла:
      64,8 КБ
      Просмотров:
      20
  5. Axom

    Axom

    Регистр.:
    25 апр 2007
    Сообщения:
    320
    Симпатии:
    94
    А теперь читаем внимательно первое сообщение :)
     
  6. karapet

    karapet

    Регистр.:
    9 сен 2008
    Сообщения:
    168
    Симпатии:
    104
    Действительно:) Писал сонный, не заметил... Думаю это должно помочь:http://www.webdeveloper.com/forum/archive/index.php/t-105277.html

    пример:
    PHP:
    <script language=javascript>
     
    window.onload window.print;
     
    </script>
     
  7. Axom

    Axom

    Регистр.:
    25 апр 2007
    Сообщения:
    320
    Симпатии:
    94
    Тогда печатается первая страница, а не popup :)
    Проверено. :(
     
  8. Axom

    Axom

    Регистр.:
    25 апр 2007
    Сообщения:
    320
    Симпатии:
    94
    Может кому пригодится, вот решение:
    HTML:
    <html>
    <head>
    <title>Print Image Only</title>
    <script>
    function makepage(src) {
      // We break the closing script tag in half to prevent
      // the HTML parser from seeing it as a part of
      // the *main* page.
      return "<html>\n" +
        "<head>\n" +
        "<title>Temporary Printing Window</title>\n" +
        "<script>\n" +
        "function step1() {\n" +
        "  setTimeout('step2()', 10);\n" +
        "}\n" +
        "function step2() {\n" +
        "  window.print();\n" +
        "  window.close();\n" +
        "}\n" +
        "</scr" + "ipt>\n" +
        "</head>\n" +
        "<body onLoad='step1()'>\n" +
        "<img src='" + src + "'/>\n" +
        "</body>\n" +
        "</html>\n";
    }
    function printme(evt) {
      // Old IE
      var image = evt.target;
      if (!image) image = window.event.srcElement;
      if (!evt) evt = window.event;
      src = image.src;
      link = "about:blank";
      var pw = window.open(link,"_new");
      pw.document.open();
      pw.document.write(makepage(src));
      pw.document.close();
    }
    </script>
    </head>
    <body>
    <h1>Print Image Only</h1>
    <p>When you click on the image below, just the image should print.
    And the temporary window used in the process should go away
    afterwards, whether you allow the print operation to go ahead or not.</p>
    <p><noscript>
      <b>You have JavaScript turned off.</b>
      So this won't work. That is to be expected.
    </noscript></p>
    <img src="http://site.ru/images/myimg.jpg" onClick="printme(event)"/>
    </body>
    </html>
    Источник: http://my.opera.com/isle0/blog/show.dml/5192761
     
Статус темы:
Закрыта.