2010-10-22 96 views
0

我正在嘗試在iframe中承載不同應用程序(也包括網站)的網站。注意:一次只有一個應用程序處於活動狀態(顯示)。我的問題是,依賴於目標的鏈接被加載到錯誤的iframe中(第一個被發現)。動態更改iframe /框架的名稱

爲了避免依賴特定目標的鏈接出現問題,腳本將隱藏的iframe的屬性「名稱」更改爲其他名稱,並將當前的iframe重命名爲正確的名稱/目標。

但是,當我點擊一個鏈接,該網站載入錯誤的框架。

爲了澄清我的問題,請查看以下代碼。 有鏈接可激活三個iframe中的一個(其他兩個隱藏)。當用戶點擊sourceforge鏈接時,頁面應該被加載到活動的iframe中(當時顯示的那個iframe),但它被加載到第一個(ms)iframe中。

有沒有辦法解決這個問題?

使用Firefox 3.6.11/Windows 7的

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Test</title> 
<script type="text/javascript"> 
function activate(n){ 
    var iframes = document.getElementsByTagName('iframe'); 
    for(var i = 0; i < iframes.length; i++){ 
     var f = iframes[i]; 
     f.style.display = 'none'; 
     f.name = 'hidden-'+i; 
    } 
    document.getElementById('target'+n).style.display = 'inline'; 
    document.getElementById('target'+n).name = 'target'; 
} 
</script> 
</head> 
<body> 
<h1>Willkommen</h1> 

<a href="http://sourceforge.net/" target="target">Load Sourceforge in current frame</a> 
<br/> 
<a href="javascript:activate(1);">MICROSOFT</a> 
<a href="javascript:activate(2);">GOOGLE</a> 
<a href="javascript:activate(3);">ORACLE</a> 

<iframe id="target1" src="http://www.microsoft.com/" name="target" width="100%" height="400px">noframes</iframe> 
<iframe style="display:none;" id="target2" src="http://www.google.com/" name="hidden-1" width="100%" height="400px">noframes</iframe> 
<iframe style="display:none;" id="target3" src="http://www.oracle.com/" name="hidden-2" width="100%" height="420px">noframes</iframe> 

</body> 
</html> 

回答

0

沒有爲您的需求的解決方法:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Test</title> 
<script type="text/javascript"> 
function activate(n){ 
    var iframes = document.getElementsByTagName('iframe'); 
    for(var i = 0; i < iframes.length; i++){ 
     var f = iframes[i]; 
     f.style.display = 'none'; 
     f.name = 'hidden-'+i; 
    } 
    document.getElementById('target'+n).style.display = 'inline'; 
    document.getElementById('target'+n).name = 'target'; 
} 

function loadInActive(aTag) { 
    var iframes = document.getElementsByTagName('iframe'); 
    for(var i = 0; i < iframes.length; i++){ 
     var f = iframes[i]; 
     if(f.style.display == "inline") { 
      f.src = aTag.href; 
     } 
    } 
} 
</script> 
</head> 
<body> 
<h1>Willkommen</h1> 

<a href="http://sourceforge.net/" target="target" onclick="loadInActive(this);return false;" >Load Sourceforge in current frame</a> 
<br/> 
<a href="javascript:activate(1);">MICROSOFT</a> 
<a href="javascript:activate(2);">GOOGLE</a> 
<a href="javascript:activate(3);">ORACLE</a> 

<iframe id="target1" src="http://www.microsoft.com/" name="target" width="100%" height="400px">noframes</iframe> 
<iframe style="display:none;" id="target2" src="http://www.google.com/" name="hidden-1" width="100%" height="400px">noframes</iframe> 
<iframe style="display:none;" id="target3" src="http://www.oracle.com/" name="hidden-2" width="100%" height="420px">noframes</iframe> 

</body> 
</html> 
+0

你是對的,解決方法的工作原理。這是我的實際問題的簡化版本,您的解決方法無法幫助我解決問題。不過,謝謝你的回答! – Adrian 2010-10-22 15:14:26