Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2013, 15:22
Новичок на форуме
Отправить личное сообщение для vl2013 Посмотреть профиль Найти все сообщения от vl2013
 
Регистрация: 05.09.2013
Сообщений: 7

AJAX загрузка внешнего скрипта и переопределение documen.write для внешнего скрипта
возникла необходимость для оптимизации загрузки сайта подгружать внешний баннер асинхронно.
Сам баннер имеет подключается через
<script src="http://внешний_сайт/путь_к_внешнему_скрипту.js"></script>
Подгрузить этот скрипт асинхронно не проблема, но проблема в том, что он использует documen.write (понятно что это не срабатывает).

Подскажите пожалуйста, есть ли какие-то решения для асинхронной загрузки подобных баннеров/информеров ?
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2013, 15:37
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

я тут вижу только один путь - переопределить documen.write так чтобы он просто создавал пустой див, засовывал в его innerHTML содержимое и добавлял этот див в конец body.

типа
document.write = function(text) {
   ...
};
это выполнить перед подключением скрипта.

только неизвестно, в любом ли браузере можно переопределить эту функцию.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2013, 15:45
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

ещё вариант - динамически добавлять на страницу iframe, а в нем просто выставить <script src="http://внешний_сайт/путь_к_внешнему_скрипту.js"></script>
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2013, 15:50
Новичок на форуме
Отправить личное сообщение для vl2013 Посмотреть профиль Найти все сообщения от vl2013
 
Регистрация: 05.09.2013
Сообщений: 7

iframe вариант похуже... Начитался отзывов плохих о использовании iframe для ускорения загрузки сайта, к тому же высота может изменятся.

Первый вариант тут подойдет. Готовых решений никто не встречал?
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2013, 15:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от vl2013
iframe вариант похуже... Начитался отзывов плохих о использовании iframe для ускорения загрузки сайта, к тому же высота может изменятся.
Зато усложнены применение всяких автокликеров, если актуально,
высоту можно выставлять в названии файла - парся затем src фрейма нижестоящим скриптов и выставляя атрибут heigh=
Ответить с цитированием
  #6 (permalink)  
Старый 05.09.2013, 16:01
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Deff
высоту можно выставлять в названии файла
правильная высота известна только тому внешнему сайту, и узнать ее не получится - свойства документа закрыты для чужого домена (если не ошибаюсь)
Ответить с цитированием
  #7 (permalink)  
Старый 05.09.2013, 16:06
Новичок на форуме
Отправить личное сообщение для vl2013 Посмотреть профиль Найти все сообщения от vl2013
 
Регистрация: 05.09.2013
Сообщений: 7

суть вопроса не в iframe ... Если можно - прошу помощи в реализации переопределения documen.write .
Ответить с цитированием
  #8 (permalink)  
Старый 05.09.2013, 16:15
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

vl2013,

а какие строки передаются в documen.write в этом скрипте?
Ответить с цитированием
  #9 (permalink)  
Старый 05.09.2013, 16:30
Новичок на форуме
Отправить личное сообщение для vl2013 Посмотреть профиль Найти все сообщения от vl2013
 
Регистрация: 05.09.2013
Сообщений: 7

document.write( "<style type=\"text/css\"> div\#m ....
Т.е. стили подключаются.

Но я бы хотел сделать универсальный вариант. Так как есть еще и другие внешние скрипты. Хотя для начала хоть это можно реализовать.
Ответить с цитированием
  #10 (permalink)  
Старый 05.09.2013, 16:54
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

vl2013,

если в том скрипте только один вызов document.write, то проще всего так: на том месте html, где ранее подключался скрипт, ставишь <div id="id_outer_banner1"></div>

document.write переопределяешь так:
document.write = function(text) {
   document.getElementById('id_outer_banner1').innerHTML = text;
};


и весь баннер разместится в диве.


если вызовов document.write несколько, то придется накапливать строку в переменной, потом вставлять ее в див.


для других баннеров надо думать, как обобщить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Загрузка внешнего скрипта... viliv Общие вопросы Javascript 26 26.01.2009 13:21