Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подгрузка ява скрипта . можно ли (https://javascript.ru/forum/misc/1956-podgruzka-yava-skripta-mozhno-li.html)

AntonPetrovich 10.10.2008 09:57

Подгрузка ява скрипта . можно ли
 
Добрый день!
Я не уверен туда ли написал вопрос Но все же....
возникла такая задача.
Есть сайт panton.firstvds.ru на нем будут описания замков мира + карта от гугла на которой показывается где распологается сам замок.
необходимо сделать чтоб карта подгружалась по клику на вкладке "Карта", то есть чтоб она грузилась только после того как кликнут по этой ссылке. Вот примерный код который хочу вставить :)

.... <li><a href="#body_karta" id="megakarta"><span>Карта</span></a></li> 

<script type='text/javascript'>
function videoclick() {
//-----------
var cod ='<script type="text/javascript">
/* <![CDATA[ */   
Drupal.extend({ settings: { "gmap": { "nodemap": { "width": "100%", "height": "600px", "zoom": 5, "controltype": "Small", "align": "None", "maptype": "Map", "line_colors": [ "#00cc00", "#ff0000", "#0000ff" ], "behavior": { "locpick": false, "nodrag": 0, "nokeyboard": 1, "nomousezoom": 1, "autozoom": 0, "dynmarkers": 0, "overview": 1, "notype": 0, "collapsehack": 0, "scale": 1 }, "markermode": "2", "id": "nodemap", "longitude": "140.463638", "latitude": "40.607518", "rmtcallback": "/castle/?q=map/node/load", "markers": [ { "link": "/castle/?q=node/27", "latitude": "40.607518", "longitude": "140.463638", "markername": "small red", "opts": { "title": "Hirosaki Castle : Широта 40.607518 : Долгота 140.463638" } } ], "querypath": "http://localhost/castle/?q=map/query" } } } });
 /* ]]> */ </script>  '

//---------------
var statusElem = document.getElementById('body_karta')
 statusElem.innerHTML = '<br>'+cod}
document.getElementById('megakarta').onclick= videoclick
</script>	

<div id="body_karta" style=" padding:5px; border:1px solid #6079D1; text-align:center;">

            </div>


то есть получается надо вставить через яваскрипт другой яваскрипт с картой от гугля чтоб показывалась эта карта. можно ли так ?
само собой приведенный выше код не работает. судя по всему из за того что браузер воспринимает закрывающий яваскрипт тег как закрывающий внешний открывающий тег и на страницу вываливается следующее:

'
 
//---------------
var statusElem = document.getElementById('body_karta')
 statusElem.innerHTML = '<br>'+cod}
document.getElementById('megakarta').onclick= videoclick
</script>    
 
<div id="body_karta" style=" padding:5px; border:1px solid #6079D1; text-align:center;">
 
            </div>


Зато если просто вставить код содержащий вызов карты гугла то все оно работает.

Kolyaj 10.10.2008 10:32

Динамическое подключение js-файла:
var s = document.createElement('SCRIPT');
s.type = 'text/javascript';
s.src = '/js/myscript.js';
document.body.appendChild(s); // Эта строчка будет работать только после открытия тэга body

AntonPetrovich 10.10.2008 11:05

Цитата:

Сообщение от Kolyaj (Сообщение 6954)
Динамическое подключение js-файла:
var s = document.createElement('SCRIPT');
s.type = 'text/javascript';
s.src = '/js/myscript.js';
document.body.appendChild(s); // Эта строчка будет работать только после открытия тэга body

всмысле?
то есть если мне надо чтоб по клику на ссылке вставлялся этот код и выполнялся.
как мне применить выше написанное для решение данное проблемы :).

я так понимаю что указанным вами способом просто подцепиться внешний скрипт ?.

Snipe 10.10.2008 13:52

А нельзя там iframe сделать, в котором будет карта?
При нажимании на владку будете показывать этот iframe.

AntonPetrovich 10.10.2008 14:47

можно наверно все . но как сделать этот Iframe

Snipe 10.10.2008 16:00

ну хотя бы так:
var ifr =  document.createElement('iframe');
ifr.src = "";
ifr.style.здесь_разные_стили = и позиционирование;
див_где_должна_открываться_карта.appendChild(ifr);

magistr_bender 11.10.2008 13:30

а как по мне так вариант с динаическим подгружением скрипта интереснее... хотя первое что мне пришло в голову это именно ифрэйм)
а насчёт использования надо вставлять его суда
в функцию которую вызывает событие онклик

AntonPetrovich 13.10.2008 11:57

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

http://javascript.ru/ajax/transport/...ozdaiem-iframe

то есть много раз тыкаем на кнопку - много появляется фрэймов. а нужно чтоб один :)

Snipe 13.10.2008 12:29

if (!ifr) {
    var ifr =  document.createElement('iframe');
    ifr.style.здесь_разные_стили = и позиционирование;
    див_где_должна_открываться_карта.appendChild(ifr);
}
ifr.src = "";

Как-то так.

SunnyDay 13.10.2008 12:33

Для динамически сгенереного кода (например твой клик по ссылке), есть функция
eval("[javascriptcode]");


Часовой пояс GMT +3, время: 04:15.