Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Трабл в таблице... (https://javascript.ru/forum/misc/2103-trabl-v-tablice.html)

alexKniaz 01.11.2008 18:04

Трабл в таблице...
 
<html>
<head>
<style type="text/css">#headingBlock{display:none;}
</style>
<script type="text/javascript">
function getIframeDocument(iframeNode)
{
if (iframeNode.contentDocument) return iframeNode.contentDocument;
if (iframeNode.contentWindow) return  iframeNode.contentWindow.document;
return iframeNode.document;
}
function parseData(code)
{
out=new String(code);
Reg=new RegExp('<div>','gi');
out=out.replace(Reg,'<div class="expand">');
Reg=new RegExp('<a','gi');
out=out.replace(Reg,'<a target="content"');
return out;
}
function  heading_loaded(obj)
{
xml_code=parseData(getIframeDocument(obj).body.innerHTML);
document.getElementById('headingBlock').innerHTML=xml_code;
document.getElementById('data').style.display='block';
document.getElementById('headingLoader').style.display='none';
}
function showHeadig(obj)
{
obj.height=150;document.getElementById('headingBlock').style.display='block';
document.getElementById('sp0').innerText='Чтобы скрыть содержание уведите отсюда мышь';
}
function hideHeadig(obj)
{
obj.height=25;document.getElementById('headingBlock').style.display='none';
document.getElementById('sp0').innerText='Для просмотра содержания  наведите курсор';
}
</script>
</head>
<body>
<iframe style="display:none" id="heading" name="heading" src="help-data/index.html" onload="heading_loaded(this);" display="none">
</iframe>
<table id="data" style="display:none;width:100%;height:100%;">
 <tr>
  <td height="25" valign="top" onmouseover="showHeadig(this);"      onmouseout="hideHeadig(this);">
    <div id="headingBlock" style="height:125;overflow:auto;"></div>
    <span id="sp0">Для просмотра содержания наведите курсор</span>
   </td>
  </tr>
  <tr>
   <td>
    <iframe name="content" style="width:100%;height:100%;"></iframe>
   </td>
  </tr>
 </table>

 <div id="headingLoader" style="width:100;height:100;">
  Идёт загрузка оглавления. Подождите.<br />
  <img src="ajax-loader.gif" />
 </div>

 </body>
</html>

Почему в IE 7 таблица data успешно разворачивается на весь экран, а в Opera 9.61 - нет?:confused:

alexKniaz 01.11.2008 19:48

Странное дело. Бросил css и задал размееры при помощи html-артрибутов - и всё пошло...

alexKniaz 01.11.2008 21:11

Я всё больше начинаю верить в паранормальное...
<html>
<head>
<style type="text/css">#headingBlock{display:none;}
</style>
<script type="text/javascript">
//Получение дока ифрейма
function getIframeDocument(iframeNode)
{
if (iframeNode.contentDocument) return iframeNode.contentDocument;
if (iframeNode.contentWindow) return iframeNode.contentWindow.document;
return iframeNode.document;
}
//Парсинг данных
function parseData(code)
{
out=new String(code);
Reg=new RegExp('<div>','gi');
out=out.replace(Reg,'<div class="expand">');
Reg=new RegExp('<a','gi');
out=out.replace(Reg,'<a target="content"');
return out;
}
//Когда содержание загрзилось
function  heading_loaded(obj)
{
//Получаем xml-код
xml_code=parseData(getIframeDocument(obj).body.innerHTML);
//Создаём выходной html-код
//И выводим его в блок headingBlock
document.getElementById('headingBlock').innerHTML=xml_code;
//Отображаем таблицу с контентом
document.getElementById('data').style.display='block';
//Скрываем сообщение о загрузке содержания
document.getElementById('headingLoader').style.display='none';
}
//Отображение содержания
function showHeadig(obj)
{
//Подгоняем под него высоту ячейки
obj.height=150;
document.getElementById('headingBlock').style.display='block';
//Изменяем содержимое текста под содержанием.
document.getElementById('sp0').innerText='Чтобы скрыть содержание уведите отсюда мышь';
}
//Скрытие содержания
function hideHeadig(obj)
{
//Уменюшаем высоту ячейки обратно
obj.height=25;document.getElementById('headingBlock').style.display='none';
document.getElementById('sp0').innerText='Для просмотра содержания наведите курсор';
}
</script>
</head>
<body>
<iframe style="display:none" id="heading" name="heading" src="help-data/index.html" onload="heading_loaded(this);" display="none">
<!--
Этот ифрейм (скрытый загружает содержание, а по окончании его загрузки - вызывает heading_loaded, и, следовательно парсинг данных
-->
</iframe>
<!--Таблица с содержимым.
В окончательном варианте этих bgcolor-ов небудет, это отладочные.
-->
<table bgcolor="#ababab" id="data" style="display:none;" id="data" height="100%" width="100%">
<tr>
<td height="25" valign="top" onmouseover="showHeadig(this);" onmouseout="hideHeadig(this);">
 <div id="headingBlock" style="height:125;overflow:auto;">
 <!--
Сюда парсер содержания выкладывает html-код содержания
  -->
 </div>
 <span id="sp0">Для просмотра содержания наведите курсор</span>
</td>
</tr>
<tr>
 <td bgcolor="7777ff">
<!--
Это - ифрейм для загрузки статей. По идее должен разползить на всю ячейку
-->
  <iframe onReadyStateChange="alert('1');" name="content" height="100%" width="100%"></iframe>
 </td>
</tr></table>

<table id="headingLoader" height="100%" width="100%">
<tr><td align="center" valign="center">
<span id="gdfgtdeh">Пожалуйста, активируйте JavaScript</span>
<script language="javascript" type="text/javascript">
document.getElemntById('gdfgtde').innerHTML='Выполняется загрузка содержания... Пожалуйста, подождите<br><img src="ajax-loader.gif">';
</script>

</td></tr>
</table>

</body></html>


Паранормально вот что: (приготовьтесь) : ячейка в таблице, исходя из bgcolor-ов, не расползается на отведённую ей область... Я в шоке...


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