Возникла такая вот очень не понятная проблема с Оперой и 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 из разных доменов.
Очень надеюсь на Вашу помощь, только, пожалуйста, если это возможно то приведите пример кода, если нет, то какие тогда варианты решения данной задачи?
Заранее всем спасибо!
|