Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Чем заменить метод innerText для Firefox?


Автор: pLastUn 10.11.2005, 14:36
Всем здравствуйте!

Ситуация такая -

есь некое окно с формой и нижеследующим кодом:
Код

<span id='scount'>0</span> ед. товара на сумму<b><span id='sum'>0.00</span>

Данные формы передаются php-скрипту, который в конце имеет такой код:
Код

echo("<html><body><script language=javascript>");
echo("window.opener.scount.innerText='".count($zakaz)."';");
echo("window.opener.sum.innerText='".number_format(array_sum($sum),2,'.',' ')."';");
echo("window.close();");
echo("</script></body></html>");

В IE и Opera все это работает на ура,
в Firefox не работает, а в консоли JavaScript пишет "Ошибка: window.opener.scount has no properties".

Может кто подскажет, как сделать, чтобы это работало и в Firefox.

Автор: Sardar 11.11.2005, 01:06
Во первых у тебя window.opener.scount равно null, вероятно ты getElementById не пользуешся.

Для мозиллы юзаем textContent, эквивалент innerText.

Автор: pLastUn 11.11.2005, 12:14
Уважаемый Sardar!

Нельзя ли поподробнее.

Я тут нашел похожий пример http://forum.vingrad.ru/index.php?showtopic=53050&view=findpost&p=420750 но никак не соображу, как его переделать для своих нужд.

Зараннее спасибо.

Автор: pLastUn 11.11.2005, 16:50
Спасибо , разобрался , получилось вот так:
Код

echo("<html><body></span><script language=javascript>"); 
echo("var a='".count($zakaz)."';"); 
echo("var b='".number_format(array_sum($sum),2,'.',' ')."';"); 
echo("if(!window.opener||window.opener==self) self.close();"); 
echo("var f=window.opener.document.getElementById('scount');"); 
echo("var g=window.opener.document.getElementById('sum');"); 
echo("if (window.navigator.appName != 'Netscape')"); 
echo("{f.innerText=a; g.innerText=b} "); 
echo("else {f.textContent=a; g.textContent=b};"); 
echo("self.close();");       
echo("</script></body></html>"); 


Работает в IE Opera FireFox, в других не проверял, нету.

Автор: Sardar 11.11.2005, 22:13
pLastUn приводи html/js, а не PHP. По коду, проверка на нетскейп плохая, лучше:
Код
if(typeof(f.innerText)!='undefined') {
  f.innerText=a;
  g.innerText=b;
} else {
  f.textContent=a;
  g.textContent=b;
}

И никакой привязки к конкретному браузеру.

Автор: pLastUn 14.11.2005, 12:42
Да, так тоже работает, СПАСИБО!

Автор: Aliance 17.11.2005, 19:40
А почему не используем универсальный innerHTML ?

Автор: Sardar 18.11.2005, 00:54
Цитата(Aliance @ 17.11.2005, 18:40)
А почему не используем универсальный innerHTML ?

Потому что разметку выдаёт.

Автор: Aliance 20.11.2005, 01:00
Так там же числа, как я понял 0 и т.д.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)