Консультация № 160859
18.02.2009, 23:28
0.00 руб.
0 4 4
Здравствуйте, уважаемые эксперты.
Есть сайт на html, созданный на таблицах. Возможно ли средствами html или css сделать так, чтобы при загрузке страницы в одну из ячеек таблицы вставлялся другой файл html (тоже таблица). Объясню для чего это надо: другой файл - это меню, и чтобы, при необходимости его переделать, не надо было переделывать каждую страницу, а достаточно было только один файл, который автоматически вставлялся бы на каждую страницу сайта.
Если не возможно это сделать на html или css, то как можно?
Заранее спасибо за ответ!

Обсуждение

Неизвестный
19.02.2009, 03:21
общий
это ответ
Здравствуйте, Megas!

Другую страницу можно вставить, используя тег iframe. Но в вашем случае это сложно назвать правильным решением. Все упирается в то, что html страницы статичны, а значит каждый раз, когда вам нужно будет добавить пункт в меню, придется переписывать соответствующую страницу.
Я бы посоветовал обратить внимание на какой-нибудь из серверных языков программирования: php, perl, python, ruby, C# (в составе asp.net). Например в asp.net для этой цели достаточно написать контрол, который затем достаточно вставить куда нужно(как вариант: включить в состав master-page). При этом информация (пункты меню и ссылки, на которые они ведут) не будет задана статически, а сможет генерироваться в момент выполнения скрипта (например считываться из базы данных).
Неизвестный
19.02.2009, 03:40
общий
это ответ
Здравствуйте, Megas!
То, что вы хотите сделать, можно реализовать серез скрипт, написанный на Jscript или VBScript (но на чистом HTML или CSS это не реализуемо). Для этого исползуйте функцию OnLoad() тега Body.
Пример:

Приложение:
<html>
<title>Example</title>
<script language="VBScript">
Sub LoadTable()
' должно быть что-то вроде этого
document.all.item("Id таблицы, которую будете обрабатывать").innerHTML=источник
или
document.all.item("Id таблицы, которую будете обрабатывать").innerText=источник
' почитайте про объектную модель HTML документа
' и ваша проблема решится...
End Sub
</script>
</head>
<body OnLoad="LoadTable()">
...
</body>
</html>
Неизвестный
19.02.2009, 10:39
общий
это ответ
Здравствуйте, Megas!
Можно также еще обратить внимание на SSI (Server-Side Include - вставки на стороне сервера). Вам потребуется в нужном месте прописать следующую конструкцию:
<!--#include virtual="адрес Вашей страницы" -->
Некоторое руководство можно найти вот здесь. Но для того, чтобы SSI использовать, он должен быть разрешен на стороне сервера. У него более широкие возможности, чем просто вставка файлов, но поскуднее, чем у PHP, конечно. С другой стороны, при всех недостатках по сравнению с Javascript, у него есть преимущество - если он разрешен, то он будет работать независимо от браузера. По сравнению с VBS, работающим только в Internet Explorer(и поэтому не способным иметь сколько-нибудь значимое практическое применение), это преимущество тем более заметно. Но и PHP точно так же должен быть разрешен сервером. Просто это - более вероятно, потому что более востребовано пользователями... Так что советую спросить у Вашего хостера насчет этой возможности.

С уважением, Товарищ Бородин
Неизвестный
19.02.2009, 19:59
общий
это ответ
Здравствуйте, Megas!

        Как вариант, если хостинг не поддерживает РНР технологии, можно воспользоваться вставкой другой страницы через JavaScript.
        Сделать это не сложно, но имейте ввиду что у некоторых пользователей обработка JavaScript в браузере отключена. Они к сожалению ваше меню не увидят.
        Пишите строку между тегами HEAD (menu.js - ваш файл с таблицей меню):

<script language="JavaScript" SRC="menu.js"></script>

        А эту между тегами BODY пишите вот это:

<script language="JavaScript">
<!--//
menu();
//-->
</script>

        А вот сам пример файла menu.js:

function menu() {
document.write ("<TABLE WIDTH="150" BORDER="1" CELLSPACING="2" CELLPADDING="0">\r\n");
document.write (" <TR ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write (" <TD BGCOLOR="#990000" WIDTH="150" ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write ("<FONT COLOR="#FFFF00"><B>Навигация</B></FONT>\r\n");
document.write (" </TD>\r\n");
document.write (" </TR>\r\n");
document.write (" <TR ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write (" <TD WIDTH="150" ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write ("Ссылка 1\r\n");
document.write (" </TD>\r\n");
document.write (" </TR>\r\n");
document.write (" <TR ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write (" <TD WIDTH="150" ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write ("Ссылка 2\r\n");
document.write (" </TD>\r\n");
document.write (" </TR>\r\n");
document.write (" <TR ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write (" <TD WIDTH="150" ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write ("Ссылка 3\r\n");
document.write (" </TD>\r\n");
document.write (" </TR>\r\n");
document.write (" <TR ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write (" <TD WIDTH="150" ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write ("Ссылка 4\r\n");
document.write (" </TD>\r\n");
document.write (" </TR>\r\n");
document.write (" <TR ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write (" <TD WIDTH="150" ALIGN="CENTER" VALIGN="MIDDLE">\r\n");
document.write ("Ссылка 5\r\n");
document.write (" </TD>\r\n");
document.write (" </TR>\r\n");
document.write ("</TABLE>\r\n");
}


        Готовый пример можете загрузить по ссылке ниже. Удачи!
Форма ответа