2010-06-30 92 views
3

我有下面的代码,我有玩:Javascript代码失去焦点

<script type="text/javascript"> 

var Dash = { 
    nextIndex: 0, 
    dashboards: [ 
     {url: 'http://www.google.com', time: 5}, 
     {url: 'http://www.yahoo.com', time: 10} 
    ], 

    display: function() 
    { 
     var dashboard = Dash.dashboards[Dash.nextIndex]; 
     parent.document.getElementById("iframe1").src = dashboard.url; 
     Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length; 
     setTimeout(Dash.display, dashboard.time * 1000); 
    } 
}; 

window.onload = Dash.display; 

</script> 

基本上它的阵列中的一个程序来循环网址到iframe。当我将parent.document.getElementById("iframe1").src设置为一个url时,发生了我的问题;它适用于第一个,但它似乎没有循环到下一个。

但是,如果我创建这个JavaScript的同一背景下的iframe,说iframe2而是只需使用:

 document.getElementById("iframe2").src = dashboard.url; 

没有parent.document呼叫,一切工作正常。

当我发出parent.document调用时,它是否失去了javascript的焦点?

当调用parent.document时,如何将焦点恢复到此JavaScript代码的任何想法?

我正在使用ie6。

+0

首先,如果你正在使用IE6作为主开发环境,你是一个受虐狂。其次,为什么你需要访问parent.document?这是一个iframe改变页面上另一个iframe的来源吗? – 2010-06-30 01:44:00

+0

嗨,不得不使用IE6作为我的工作场所使用它。其次,iframe1是我的主要内容,因为它在其他地方也是如此。 – tonyf 2010-06-30 01:50:06

回答

1

此代码更改应该工作。你需要给iframe一个名字,其次,我没有在IE6中测试它,但在IE7中工作。

<script type="text/javascript"> 

var Dash = { 
    nextIndex: 0, 
    dashboards: [ 
    {url: 'http://www.rediff.com', time: 5}, 
    {url: 'http://www.google.com', time: 10} 
    ], 

    display: function() 
    { 
    var dashboard = Dash.dashboards[Dash.nextIndex]; 
    parent.frames["fname"].location.href = dashboard.url; 
     window.focus(); 
    Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length; 
    setTimeout(Dash.display, dashboard.time * 1000); 
    } 
}; 

window.onload = Dash.display; 

</script> 
0

您是否尝试过使用'top'而不是'parent'?

top.document.getElementById("iframe1").src = dashboard.url; 

http://www.w3schools.com/jsref/prop_win_top.asp

你有绝对的参考,不担心哪个窗口,它实际上是这样的。

+0

W3Schools? [W3Fools(http://w3fools.com/)! – Gareth 2011-05-09 16:28:29