我正在尝试在iframe中拥有一个托管不同应用程序(也包括网站)的网站。注意:一次只能激活(显示)一个应用程序。我的问题是依赖于目标的链接被加载到错误的iframe(找到的第一个)中。
为避免依赖特定目标的链接出现问题,脚本会将隐藏的iframe的属性“名称”更改为其他内容,并将当前iframe重命名为正确的名称/目标。
但是当我点击某个链接时,该网站会加载错误的框架。
要澄清我的问题,请查看以下代码。 有一些链接可以激活三个iframe中的一个(另外两个是隐藏的)。当用户点击sourceforge链接时,该页面应该加载到活动的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 :(得分: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>