Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите! Почему в Opera js-код работает с ошибкой. В IE все нормально. (https://javascript.ru/forum/events/1703-pomogite-pochemu-v-opera-js-kod-rabotaet-s-oshibkojj-v-ie-vse-normalno.html)

maxonline 04.09.2008 19:11

Помогите! Почему в Opera js-код работает с ошибкой. В IE все нормально.
 
Спецы JS помогите разобраться в чем проблема!
На странице есть ссылка, вида:
<a href="javascript:void(0)" onclick="print_kvitok(); return false;" target="_self">Открыть для печати в новом окне</a>
.
Функция , которая вызывается по клику:
function print_kvitok(){
kvit = window.open("","kvitokwin", "fullscreen=no,status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=yes,resizable=yes,directories=no,location=no,width=710,height=600");
with (kvit.document) {
kvitan=document.getElementById('kvitok').innerHTML;
open('text/html');
writeln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
writeln('<html xmlns="http://www.w3.org/1999/xhtml">');
writeln('<html>');
writeln('<head>');
writeln('<title>Банковский перевод</title>');
writeln('<link rel="stylesheet" href="/style.css">');
writeln('</head>');
writeln('<style type="text/css">');
writeln('H1 {font-size: 12pt;}');
writeln('p, ul, ol, h1 {margin-top:6px; margin-bottom:6px}'); 
writeln('td {font-size: 9pt;}');
writeln('small {font-size: 7pt;}');
writeln('body {font-size: 10pt;}');
writeln('</style>');
writeln('<body style="margin:2px;" marginheight=0 marginwidth=0 bgcolor="#ffffff" link="black" vlink="#a0a0a0" alink="#fa0055">');
writeln('<table align="center" width="90%" cellspacing="2" cellpadding="2" border="0"><tr>');
writeln('<td valign="top" height="90%" colspan="2">');
writeln(kvitan);
writeln('</td></tr>');
writeln('<tr><td align="right"><a href="javascript:void(0)" onClick="window.close()">Закрыть окно</a> </td>');
writeln('<td align="left"> <a href="javascript:void(0)" onClick="window.print(); return false">Печать квитанции</a></td></tr></table>');
writeln('</body>');
writeln('</html>');
close();
}}

Открывается новое окно в котором должна появиться квитанция.
На самой HTML странице есть DIV:
<div id=kvitok...
, в котором заключен HTML-код самой квитанции. В IE все работает отлично - открывается новое окно, в нем выводится квитанция. В Opera окно новое открывется, но оно совершенно пустое. В Error Console Оперы следующее сообщение.
JavaScript - [url]http://www.hs-market.ru/index.php/shop?page=account.order_details&order_id=6&vmcchk=1[/url]
Event thread: click
Error:
name: TypeError
message: Statement on line 6: Cannot convert undefined or null to Object
Backtrace:
  Line 6 of inline#4 script in [url]http://www.hs-market.ru/index.php/shop?page=account.order_details&order_id=6&vmcchk=1:[/url] In function print_kvitok
    var kvitan=document.getElementById('kvitok').innerHTML;


Что не правильно в коде? Помогите разобраться.

ZoNT 04.09.2008 20:22

ну так вынеси эту строку из with

maxonline 04.09.2008 22:12

Спасибо, ZoNT! :) Все заработало!

Mupok 21.11.2008 12:22

Цитата:

Сообщение от ZoNT (Сообщение 5372)
ну так вынеси эту строку из with

У меня тоже такая проблема. Я так понял нужно что то сделать с 6 строкой в JS, тока вот не понял что значит вынести строку из with. Объясните пожалуйста.

ZoNT 21.11.2008 12:39

вынести - значит убрать из with и (в данном случае) написать перед with.
Почему? Потому что:
var kvitan=document.getElementById('kvitok').innerHTML ;
Мы обращаемся к document, а в with определён kvit.document, то есть фактически мы пытаемся обратится к kvit.document.document.getElementById('kvitok').in nerHTML


Часовой пояс GMT +3, время: 18:02.