Проблемы с динамической загрузкой внешних js-файлов при событии onload - PullRequest
0 голосов
/ 10 июня 2009

Я пытаюсь заставить lightbox2 работать с моим сайтом, http://www.therussianfrostfarmers.com/ Однако, похоже, у меня проблема с конфликтующими внешними js-файлами. Я не совсем уверен, что знаю, в чем проблема с этим кодом, но я верю, что он связан с тем, как вызываются события загрузки. содержимое блога на домашней странице загружается в iframe, размер iframe динамически изменяется, чтобы соответствовать содержимому с помощью события onload, но когда я импортирую файлы, необходимые для lightbox2 (как обычно) ....

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>

.... он отменяет мой updateSize (), вызываемый в iframe. lightbox2 все еще работает.

Я сузил проблемный файл js до prototype.js.

Я пытался обработать последовательность событий с помощью функции dhtmlLoadScript (). Используя следующий код, страница загружается правильно, размер фрейма корректно изменяется, но затем страница становится белой, а значок загрузки Firefox просто продолжает вращаться.

<script type='text/javascript'>
// function to resize iframe
function updateSize() 
{ 
    // get width
    frame_x = $('#content').width() -5; 

    // apply width 
    $('#iframed').css('width', frame_x); 


    //get height
    var the_height = document.getElementById('iframed').contentWindow.document.body.scrollHeight +120;

    //apply height
    document.getElementById('iframed').height = the_height;

}

// function to load external js files 
function dhtmlLoadScript(url)
{
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}

// function to handle each event on onload callback 
function callbackHandler()
{
   updateSize();
   dhtmlLoadScript("http://www.therussianfrostfarmers.com/ndxz-studio/site/js/prototype.js");
   dhtmlLoadScript("http://www.therussianfrostfarmers.com/ndxz-studio/site/js/scriptaculous.js?load=effects,builder");
   dhtmlLoadScript("http://www.therussianfrostfarmers.com/ndxz-studio/site/js/lightbox.js"); 
} 

</script>

<iframe src='$url' frameborder='0' id='iframed' onload="callbackHandler()"></iframe>

Извините, если что-то неясно.

Спасибо Cam

1 Ответ

0 голосов
/ 10 июня 2009

что-то быстрое, чтобы проверить, посмотрите, не переименовано ли имя функции updateSize () в прототипе

...