|
Тема |
Някой да е по-наясно с DOM на Netscape 6/7 |
|
Автор |
Byd™ ((Nyakoj)) |
|
Публикувано | 28.07.03 21:27 |
|
|
Здравейте,
имам следния проблем:
Това е HTML-a:
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="bg">
<style type="text/css">
.SubHMarquee
{font-family: Arial; font-size: 7pt; font-weight: bold; color: #000000; text-align: left; font-style: italic; text-decoration: none}
</style>
<TITLE> test </TITLE>
<script language="JavaScript">
<!--
var MarqueeHTML="<nobr>Alabala, alabala - Retrieves the width of the object without taking into account any margin, border, scroll bar, or padding that might have been applied to the object. - I oshte alabala....<\/nobr>";
var MxLoc=0;
var VisibleWidth;
var ScrollObjW;
var EndLeftPos;
var ScrollStep=1;
var ScrollSpeed=50;
function ScrollMarquee() {
if(isNaN(window.innerWidth)){VisibleWidth=document.body.clientWidth;} //IE
else{VisibleWidth=window.innerWidth;} //NS
MxLoc=VisibleWidth;
document.getElementById("SMarqueeCell").innerHTML=MarqueeHTML;
document.getElementById("SMarqueeTable").style.left=MxLoc+"px";
document.getElementById("SMarqueeTable").style.visibility="visible";
if(isNaN(window.innerWidth)){ScrollObjW=document.body.scrollWidth-VisibleWidth;} //IE
else{ScrollObjW=document.width-VisibleWidth;} //NS
EndLeftPos=-ScrollObjW;
setInterval('MMoving()',ScrollSpeed);
}
function MMoving() {
MxLoc=parseInt((MxLoc-ScrollStep),10);
document.getElementById("SMarqueeTable").style.left=MxLoc+"px";
if(MxLoc<EndLeftPos){MxLoc=VisibleWidth;}
}
//-->
</script>
</HEAD>
<BODY bgcolor="#E6E6E6" leftmargin="0" topmargin="0" onload="ScrollMarquee()">
<table height="15" border="0" cellspacing="0" cellpadding="0" style="position: absolute; left: 0px; top: 0px; height: 15; z-index: 1; visibility: hidden" id="SMarqueeTable">
<tr height="15">
<td height="15" align="left" valign="middle" class="SubHMarquee" id="SMarqueeCell"><nobr></nobr></td>
</tr>
</table>
</BODY>
</HTML>
Този HTML се отваря във фрейм, чиято ширина е твърдо 530 пиксела (<frameset cols="*,530,*">) и scrolling="no"....
Проблемът възниква, когато трябва да сметна текущата дължина на таблицата SMarqueeTable за да мога да преценя кога да започна да я скролирам отначало. Тази дължина се променя в зависимост от дължината на MarqueeHTML, която ще бъде променлива....
Във IE няма никакъв проблем: след като "напълня" таблицата и я "избутам" в десния край на видимия прозорец, разликата между текущата ширина на целия документ (document.body.scrollWidth) и ширината на видимия прозорец (document.body.clientWidth) ми дава точно тази ширина на таблицата...
Във Netscape 6/7 ширината на видимия прозорец няма грижи (window.innerWidth), обаче има проблем с ширината на целия документ:
в случая document.width (което според документацията, която открих за DOM-а би трябвало да е точно това) ми връща ширината на видимия прозорец - 530 ?!?!??
ако пък използвам document.body.scrollWidth (което пак според документацията би трябвало да си работи с NS6/7) всичко е точно както трябва да бъде, докато прозореца е с разрешени скролбарове. В моя случай обаче скролбара се налага да е забранен и тогава document.body.scrollWidth ми връща 0, независимо че таблицата "стърчи" с цялата си ширина надясно от края на видимия прозорец...
т.е. под Netscape не мога по този начин динамично да "прихвана" текущата ширина на тази таблица (SMarqueeTable)...
Този тъп проблем ми докара главоболие в последните 2 часа - какво ли не опитвах и не ще....
Някакви идеи ???????????
|
| |
|
|
|