Показать сообщение отдельно
  #4 (permalink)  
Старый 06.11.2009, 15:27
Аватар для Basonsan
Аспирант
Отправить личное сообщение для Basonsan Посмотреть профиль Найти все сообщения от Basonsan
 
Регистрация: 22.10.2009
Сообщений: 50

Сообщение от Ser_Maxim Посмотреть сообщение
Возникла такая вот очень не понятная проблема с Оперой и IE, в Хроме и Фаерфоксе все красиво работает.
Необходимо получить данные из одного файла js и использовать их в другом.
Имеем три файла (код приведен в упрощенном виде, чтобы показать cуть проблемы):

1. test.html его содержание:
<html>
<head>
<title>Тест скрипта</title>
</head>
<body>
<script type="text/javascript" src="main.js"></script>
</body>
</html>


2. main.js его содержание:
document.write('<script type="text/javascript" src="addtext.js"></script>')
document.write('Второй блок текста<br>')


3. addtext.js
var add = 'Первый блок текста<br>'
document.write(add)


Если запускаем test.html в браузерах Хром и Фаерфокс, то результат на экране получаем такой:

Первый блок текста
Второй блок текста

А вот в Опере и IE результат тоже получаем, только неожиданный:

Второй блок текста
Первый блок текста

Эта парочка браузеров выполняет document.write('<script type="text/javascript" src="addtext.js"></script>') в последнюю очередь и записывает результат ниже, т.е. не на том месте как ожидаешь.
Перебрал кучу вариантов (я не опытный юзер явы - тока учусь), прогуглил все что можно и вот решил спросить совета у профессионалов.

Предполагаю что в данном случае нужно как то получить значение переменной add из файла addtext.js, т.е. решение проблемы что то вроде такого должно получиться:

main.js его содержание:
var fist = (src="addtext.js"?add.value) //значение переменной add из файла addtext.js
document.write(fist)
document.write('Второй блок текста<br>')


Вариант типа, разбить содержимое всего файла main.js на
document.write('<script type="text/javascript" src="addtext1.js"></script>')
document.write('<script type="text/javascript" src="addtext2.js"></script>')

что бы уж точно все браузеры поочередно вписывали в страницу содержимое из составных частей не подходит, т.к. файлов типа addtext.js получиться больше десятка и редактировать main.js сами понимаете по кусочкам из разных файлов не реально.
Два очень важных условия, файл addtext.js должен обязательно содержать document.write('...'), т.к. он используется в таком виде в других местах и путь к нему должен быть абсолютный, т.к. файлы будут собираться в main.js из разных доменов.

Очень надеюсь на Вашу помощь, только, пожалуйста, если это возможно то приведите пример кода, если нет, то какие тогда варианты решения данной задачи?
Заранее всем спасибо!
ну вот ты говоришь у тебя их будут десятки js
document.write('<script type="text/javascript" src="addtext1.js"></script>')
document.write('<script type="text/javascript" src="addtext2.js"></script>')

можно сделать так

for (i=1; i<=(скок будет js); i++)
document.write('<script type="text/javascript" src="addtext'+i+'.js"></script>')
Ответить с цитированием