DOCTYPE, javascript и FireFox

Unlock
На сайте с 01.08.2004
Offline
786
1255

Не могу разобраться в такой проблеме. Не работает такое

<input type='button' value='Test' id="Button" onClick='check_ss("n")'>
в FireFox, причем не работает если указан

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
Если убрать DOCTYPE то все работает. Страница проходит проверку на валидность. В IE работает без проблем, а в лисе не хочет хоть убейся, пока DOCTYPE указан. Я плохо в этом всем разбираюсь, но вот основное содержимое страницы:

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

function substituent(r) {
document.JME.setSubstituent(r);
}
function setMolecule() {
if (document.form.jme.value'!==') {
document.JME.readMolecule(document.form.jme.value);
}
}
function check_ss(exa) {
var smiles = document.JME.smiles();
var jme = document.JME.jmeFile();
var mol = document.JME.molFile();
if (smiles.length < 1) {
alert("No molecule!");
}
else {
document.form.smiles.value = smiles;
document.form.jme.value = jme;
document.form.mol.value = mol;
document.form.exact.value = exa;
var info = document.referrer;
info += " - " + navigator.appName + " - " + navigator.appVersion;
info += " " + screen.width + "x" + screen.height;
document.form.rinfo.value = info;
document.all['sform'].style.display = 'none';
document.all['swait'].style.display = 'block';
document.all['sform'].style.visibility = 'hidden';
document.all['swait'].style.visibility = 'visible';
document.form.submit();
}
}
</script>


<div id='sform' style='display:block;'>

<applet code="JME.class" name="JME" codebase="/classes" archive="JME.jar" width=600 height=400>
<param name="options" value="xbutton, hydrogens, multipart"></applet>
<form name=form action='/script.php?mode=search' method=post>

Hits:
<select name="maxHits">
<option value=10>10</option>
<option value=20>20</option>
</select>
<input type='button' value='Test' id="Button" onClick='check_ss("n")'>

<input type='button' value='Test1' id="Button" onClick='check_ss("y")'\>
<input type='hidden' name='exact'> <input type='hidden' name='smiles'>
<input type='hidden' name='jme'> <input type='hidden' name='mol'>
<input type='hidden' name='rinfo'>
<input type='hidden' name='maxCand' value='0'>
</form>
</div>

В какую сторону копать хоть, подскажите плиз.

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
gerkon
На сайте с 21.10.2005
Offline
40
#1

Попробуйте

<input type='button' value='Test' id="Button" onClick="check_ss('n');">

И вместо

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

Поставить

<script language="JavaScript">

C уважением, Андрей. Пользуюсь этим хостингом уже 4 года! (http://www.replay.ru/index.php?part_id=3600) Ведущий манул Pixshock.net (http://www.pixshock.net)
dkameleon
На сайте с 09.12.2005
Offline
386
#2
Unlock:
В IE работает без проблем, а в лисе не хочет хоть убейся,

в лисе есть яваскрипт консоль, там обычно отображается ошибка ;)

ПС. лучше целиком страничку приводить, чтобы не приходилось вручную её пересобирать.

Дизайн интерьера (http://balabukha.com/)
Unlock
На сайте с 01.08.2004
Offline
786
#3

gerkon, не помогло, к сожалению :(

dkameleon, с яваскрипт консолью не разобрался, но в консоли ошибок нашел такое:

Ошибка: document.all is undefined
document.all['sform'].style.display = 'block';

Это почти полная страничка, может в личку скинуть адрес? :) Не хочу здесь светить, т.к. все в процессе разработки.

P.S. Да, точно, проблема в этом месте:

document.form.rinfo.value = info;

document.all['sform'].style.display = 'none';
document.all['swait'].style.display = 'block';
document.all['sform'].style.visibility = 'hidden';
document.all['swait'].style.visibility = 'visible';

Если это убрать, то процесс поиска начинается, но тогда нет вывода некоторой промежуточной информации, которая нужна.

[Удален]
#4

function DN_System_Load(){
this.wib = screen.width;
this.heb = screen.height;
this.documes = (document.getElementById || document.createElement || document.getElementsByTagName) ? true : false;
this.objects = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
this.types = 'load';
}
DN_System_Load.prototype.findobj = function(obj){
this.parent = window.document;
if(this.parent.getElementById && this.parent.getElementById(obj)){ return this.parent.getElementById(obj); }
if(this.parent[obj]){ return this.parent[obj]; }
if(this.parent.all && this.parent.all[obj]){ return this.parent.all[obj]; }
if(this.parent.layers && this.parent.layers[obj]){ return this.parent.layers[obj]; }
return null;
}
DN_System_Load.prototype.odn = function(obj,styles){
var parentdiv = this.findobj(obj);
if(!parentdiv){ return; }
if(parentdiv.style){ parentdiv=parentdiv.style; }
parentdiv.display=(styles=='none') ? 'none' : (styles=='block') ? 'block' : (styles=='inline') ? 'inline' : '';
}
DN_System_Load.prototype.rdn = function(obj,styles){
var parentdiv = this.findobj(obj);
if(!parentdiv) { return; }
if(parentdiv.style) { parentdiv = parentdiv.style; }
switch(styles){
case 'display':
return (parentdiv.display ? parentdiv.display : '');
default: return null;
}
}
var DN = new DN_System_Load();
function DN_AJAX_Initialize(works){
this.works = works ? true : false;
this.reqxml = '';
this.data = '';
}
DN_AJAX_Initialize.prototype.create = function(){
if(!this.works){ return false; }
var msxmllist = new Array('Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP','Microsoft.XMLHTTP');
for(var i=0; i<msxmllist.length; i++){
try {
this.reqxml = new ActiveXObject(msxmllist);
if(this.reqxml){ return true; }
} catch(e){}
}
if(!this.reqxml && typeof XMLHttpRequest!="undefined"){
this.reqxml = new XMLHttpRequest();
if(this.reqxml){ return true; }
}
return false;
}

в использовании как пример

<div id=\"comment\" style=\"display: none;\">asdasd</div>

<a href=\"javascript:DN.odn('comment',DN.rdn('comment','display' ) ? '' : 'none');\">полный список</a>

Хотя тямы не понял полностью не понял ))

dkameleon
На сайте с 09.12.2005
Offline
386
#5
Unlock:
Это почти полная страничка, может в личку скинуть адрес? Не хочу здесь светить, т.к. все в процессе разработки.

вот эти:


document.all['sform'].style.display = 'none';
document.all['swait'].style.display = 'block';
document.all['sform'].style.visibility = 'hidden';
document.all['swait'].style.visibility = 'visible';

лучше так:


document.getElementById('sform').style.display = 'none';
document.getElementById('swait').style.display = 'block';
document.getElementById('sform').style.visibility = 'hidden';
document.getElementById('swait').style.visibility = 'visible';

и элементам соответствующие айдишки установить :)

ПС. можете и скинуть адрес.

Unlock
На сайте с 01.08.2004
Offline
786
#6

dkameleon, прости дурака, как в итоге код должен выглядеть? :) К ночи уже совсем не соображаю, что значит "и элементам соответствующие айдишки установить"?

P.S. Заменил на это

document.getElementById('sform').style.display = 'none';

document.getElementById('swait').style.display = 'block';
document.getElementById('sform').style.visibility = 'hidden';
document.getElementById('swait').style.visibility = 'visible';

и все заработало!!! Черт, я несколько лет это лечил костылями, убирая DOCTYPE :) Спасибо огромное!

dkameleon
На сайте с 09.12.2005
Offline
386
#7
Unlock:
Черт, я несколько лет это лечил костылями, убирая DOCTYPE

:)

всё гениальное просто ;)

Unlock
На сайте с 01.08.2004
Offline
786
#8
dkameleon:
:)
всё гениальное просто ;)

Обидно до соплей :) Каждый раз устанавливая софт на новый проект, я забывал в чем трабла и искал причину почему в лисе не работает. В итоге приходил к одному и тому же решению - убирал DOCTYPE :D В этот раз очень не хотелось вылезать за пределы cms и делать страничку с отдельным дизайном и вот решился спросить. Да еще я лох не знал что лиса об ошибках сообщает вообще то 😆 Век живи, век учись :) Еще раз спасибо всем кто принял участие.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий