Подгрузка ява скрипта . можно ли
Добрый день!
Я не уверен туда ли написал вопрос Но все же.... возникла такая задача. Есть сайт 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> Зато если просто вставить код содержащий вызов карты гугла то все оно работает. |
Динамическое подключение js-файла:
var s = document.createElement('SCRIPT'); s.type = 'text/javascript'; s.src = '/js/myscript.js'; document.body.appendChild(s); // Эта строчка будет работать только после открытия тэга body |
Цитата:
то есть если мне надо чтоб по клику на ссылке вставлялся этот код и выполнялся. как мне применить выше написанное для решение данное проблемы :). я так понимаю что указанным вами способом просто подцепиться внешний скрипт ?. |
А нельзя там iframe сделать, в котором будет карта?
При нажимании на владку будете показывать этот iframe. |
можно наверно все . но как сделать этот Iframe
|
ну хотя бы так:
var ifr = document.createElement('iframe'); ifr.src = ""; ifr.style.здесь_разные_стили = и позиционирование; див_где_должна_открываться_карта.appendChild(ifr); |
а как по мне так вариант с динаическим подгружением скрипта интереснее... хотя первое что мне пришло в голову это именно ифрэйм)
а насчёт использования надо вставлять его суда в функцию которую вызывает событие онклик |
таак после использования ифрэймов возник такой вопрос. а можно как нибудь ограничить колчисетво вставляемых фрэймов ?. то есть у меня получается вот как на этой странице:
http://javascript.ru/ajax/transport/...ozdaiem-iframe то есть много раз тыкаем на кнопку - много появляется фрэймов. а нужно чтоб один :) |
if (!ifr) { var ifr = document.createElement('iframe'); ifr.style.здесь_разные_стили = и позиционирование; див_где_должна_открываться_карта.appendChild(ifr); } ifr.src = ""; Как-то так. |
Для динамически сгенереного кода (например твой клик по ссылке), есть функция
eval("[javascriptcode]"); |
Часовой пояс GMT +3, время: 18:12. |