Смотреть полный список добавленных статей
грязевые мотопомпы 14 
Автор: krasavchegx | 3 октября 2009 | Просмотров: 21107
  Инклюд файла с помощью Java Script  

Категория: Полезные статьи

Сразу хотелось бы поздравить тех, кто читает эту статью - Вам крупно повезло если Вы сразу попали на эту страницу. Мне вообще за написание этой статьи памятник полагается.:)) Часы гугления все таки дали свой результат - я нашел как сделать инклюд любого файла с помощью ява-скрипта. И теперь делюсь этой важной инфой с Вами. Я даже представляю радостные улыбки тех, кто все же нашел ее, эту статью, с рабочим механизмом подключения файлов с помощью ява-скрипт. Также радовался и я.

Часы поиска и лазания по непонятным форумам программистов, читание заумных и непонятных фраз всяких "челов" со звездной болезнью (больше всего бесило когда в ответ на вопрос на форуме какое-то тело оставляет ссылку на результаты поиска, бывают такие мудаки:)) практически не дали результата, и вот, когда я уже было отчаился, я набрел на один сайт иностранного производства, естественно по "ненашему" написанный, на котором как раз и велась речь об инклюдах разными способами. Адрес сайта не помню (даже если б помнил ссылку бы не оставил, зачем мне дополнительная внешняя ссылка:)), но, использовав гугл-переводчик, мне сразу же стало ясно как и что куда тыкать чтобы все заработало.

Немного о том для тех, кто не знает, что такое инклюд и зачем он нужен. Инклюд - это подключение (вставка) какого-либо файла в хтмл-код другого файла, который является основным (обычно). Содержимым инклюда может быть что угодно - то ли это хтмл-код, то ли это пхп-код и т.п. Зачем нужен инклюд - ну, к примеру, у Вас сайт работает на движке, который собирается с помощью шаблонов, а в шаблонах php не поддерживается, хотя на основном хостинге пхп поддерживается, так вот можно создать файл-инклюд, в него вставить пхп-код, и подключить этот файл в файл шаблона с помощью яваскрипта. Такое может понадобиться, к примеру, при установке кодов биржи ссылок в файлы, которые не поддерживают php.

Как Вы скорее всего знаете, инклюды есть для PHP, SSI, CCS:

PHP - <?php require_once ('/include/header.htm'); ?> (или на подобие)

SSI - <!--#include virtual="/inc/footer.htm" -->

CCS - @import url(/css/style.css);

А вот про Java знают не многие. Многие вообще думают, что запись типа <script language="javascript" type="text/javascript" src="/script.js"></script> делает импорт файла, но они крупно ошибаются. Конечно же, она как бы и делает импорт, но только яваскипт-кода, содержашегося в файле с расширение .js.

Итак, все по порядку:

1. Между тегами <head>...</head> добавляем ниже приведенный код:

<script>
function clientSideInclude(id, url) {
var req = false;
// For Safari, Firefox, and other non-MS browsers
if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
} catch (e) {
req = false;
}
} else if (window.ActiveXObject) {
// For Internet Explorer on Windows
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
req = false;
}
}
}
var element = document.getElementById(id);
if (!element) {
alert("Bad id " + id +
"passed to clientSideInclude." +
"You need a div or span element " +
"with this id in your page.");
return;
}
if (req) {
// Synchronous request, wait till we have it all
req.open('GET', url, false);
req.send(null);
element.innerHTML = req.responseText;
} else {
element.innerHTML =
"Sorry, your browser does not support " +
"XMLHTTPRequest objects. This page requires " +
"Internet Explorer 5 or better for Windows, " +
"or Firefox for any system, or Safari. Other " +
"compatible browsers may also exist.";
}
}
</script>

2. Вышеприведенный скрипт универсален, в нем ничего менять не нужно, просто вставляете его в нужном месте страницы. Далее инклюд будем рассматривать на примере. К примеру, у нас есть файл file.html, который лежит в папке "inc" в корневой папке сайта. Нам нужно его подключить в какой-то другой файл, к примеру, под названием index.html. Значит следующие действия у нас будут такие - открываем index.html, вставляем перед тегом </head> выше представленный java script, далее находим тег body, и если он имеет вид

<body>
, то меняем его на ниже следующий:

<body onload="clientSideInclude('file', '/inc/file.htm');">

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

<span id="file"></span>

Очень важно, содержимое инклюда должно быть целым элементом с закрытыми тегами, т.е. будь-то таблица, или блок - все теги в них должны быть закрытыми, т.е. инклюд должен существовать и как отдельная законченная страница. Можете смело вставлять в инклюд php-код, и подключать его к страницам, которые этот php-код не поддерживают.

Если Вам нужно подключить сразу 2 и более файлов, то просто добавляете в элемент body новую переменную с подключаемым файлом, а по телу страницы разносите блоки с инклюдами туда куда Вам нужно. Пример - нужно подключить два файла file1.htm и file2.htm. Делаем:

в body добавляем

<body onload="clientSideInclude('file1', '/file1.htm'); clientSideInclude('file2', '/file2.htm');">

в нужные места страницы ставим

<span id="file1"></span>
и
<span id="file2"></span>

Если у кого скрипт не работает - пишите в коментах отзывы.


------------------------------
Другие новости по теме:

  • Включение поддержки PHP в CMS DLE
  • Как сделать любую статическую страницу главной (стартовой) в движке DLE
  • Как сделать, чтобы в модулях lastnews и topnews обрабатывались дополнительн ...
  • Как сделать поддержку PHP на Юкозе (Ucoz.ru)
  • Создание своего сайта
  • Как быстро сделать хороший сайт на HTML
  • Заработок на файлообменниках
  •  (голосов: 3)
    Комментарии (18)  Распечатать
    #1 Написал: warrior


    Регистрация: --
    Публикаций: 0
    Комментариев: 0
    привет, есть вопрос по Инклюд файла с помощью Java Script
    а как прописать ему урл если файл находится на 2 уровня выше чем страница где он включается..?
    <body onload="clientSideInclude('includeone', '../../mnu.html');">
    етот вариант не проходит почему то... (

    <body onload="clientSideInclude('includeone', 'http://link.com/mmu.html');">
    тож не проканывает ((
    12 апреля 2010 11:37 | цитировать    
    #2 Написал: krasavchegx


    Регистрация: 10.04.2009
    Публикаций: 44
    Комментариев: 36
    warrior,
    пропиши просто <body onload="clientSideInclude('includeone', '/mnu.html');"> т.е. без точек
    12 апреля 2010 13:49 | цитировать    
    #3 Написал: Михаил


    Регистрация: --
    Публикаций: 0
    Комментариев: 0
    Не работает. Инклюд нужно сделать с другого сайта то есть ссылка имеет формат http://mysite.ru/index.php и почему то не хочет он работать с таким форматом.
    30 апреля 2010 16:36 | цитировать    
    #4 Написал: krasavchegx


    Регистрация: 10.04.2009
    Публикаций: 44
    Комментариев: 36
    Для инклюда с другого сайта этот способ не подходит.
    30 апреля 2010 17:09 | цитировать    
    #5 Написал: Михаил


    Регистрация: --
    Публикаций: 0
    Комментариев: 0
    Не посоветуете способ для инклюда с другого сайта?
    30 апреля 2010 17:32 | цитировать    
    #6 Написал: krasavchegx


    Регистрация: 10.04.2009
    Публикаций: 44
    Комментариев: 36
    Ну а такой стандартный способ <script language="javascript" type="text/javascript" src="http://mysite.ru/index.php"></script> не работает что ли?
    30 апреля 2010 17:45 | цитировать    
    #7 Написал: Михаил


    Регистрация: --
    Публикаций: 0
    Комментариев: 0
    А вот про Java знают не многие. Многие вообще думают, что запись типа <script language="javascript" type="text/javascript" src="/script.js"></script> делает импорт файла, но они крупно ошибаются.

    Ау? Сами же написали что это не подходит. Нет не работает конечно.
    30 апреля 2010 18:03 | цитировать    
    #8 Написал: Алексей


    Регистрация: --
    Публикаций: 0
    Комментариев: 0
    Вообще ни хуя не работает
    Попытался инклюдить скрипт обратной связи на страницу пиздец какой то ничего не работает
    5 мая 2010 22:26 | цитировать    
    #9 Написал: krasavchegx


    Регистрация: 10.04.2009
    Публикаций: 44
    Комментариев: 36
    Все работает, даже на гавноюкозовских сайтах проверял, все отлично работает, главное все сделать по инструкции, я то знаю о чем говорю, потому что сам до сих пор эту технологию использую.
    6 мая 2010 01:45 | цитировать    
    #10 Написал: Тимур


    Регистрация: --
    Публикаций: 0
    Комментариев: 0
    Очень полезная функция, спасибо!
    Но есть важное дополнение. Если пытаюсь таким образом подключать текстовый файл, содержащий русские буквы, то они не отображаются (заменяются на квадратики). А вот если выводить английские символы или цифры, то у меня все отлично работает.
    Поэтому символы кириллицы я вывожу в юникоде (&#....;), тогда все в порядке. При этом страницы моего сайта в кодировке win-1251.
    19 июля 2010 20:30 | цитировать    

    Добавление комментария

    Ваше Имя:
    Ваш E-Mail:
    Код: Включите эту картинку для отображения кода безопасности
    обновить если не виден код
    Введите код:

     
    Яндекс цитирования  

    © 2008- SurfMoney.ru. При полном или частичном использовании материалов ссылка на SURFMONEY.RU обязательна.