在onload事件上动态加载外部js文件的问题

时间:2009-06-10 07:31:56

标签: javascript html lightbox2

我正在尝试让lightbox2与我的网站一起工作, http://www.therussianfrostfarmers.com/ 但是我似乎遇到了与外部js文件冲突的问题。我不完全确定我知道这个代码的问题在哪里,但我相信它对如何调用onload事件有所了解。主页上的博客内容被加载到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>

....它取消了我在iframe上调用的updateSize()。 lightbox2仍然有效。

我将有问题的js文件缩小到prototype.js。

我尝试使用函数dhtmlLoadScript()处理事件序列。 使用以下代码,页面正确加载,iframe正确调整大小,但页面变为白色,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>

对不起,如果有什么不清楚的话。

由于 凸轮

1 个答案:

答案 0 :(得分:0)

快速查看的内容,查看函数名称updateSize()是否未在原型中重新映射