积极答复者
请教一个关于 iframe 的问题

问题
-
在做静态页面或者是asp时定义一个如下的 iframe:
<iframe id="frmright" name="frmright" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="admin_default.htm" frameborder="0" scrolling="yes"></iframe>
当想在iframe中打开网页时,代码是这样的:
<a href="default.htm" target='frmright'>后台管理首页</a>
这样页面能在Iframe中打开。
但是在VS2005中却提示:name被视为已过时,建议用新的构造。
如果去掉 name="frmright" 网页则不能在iframe中打开,而只有id="frmright" 是没有用的。
请教一下,这个能替代name的功能的新的构造是什么啊?先谢谢了!
答案
-
办法一:这个只是警告,可以不用管,也能使用
办法二:
Code Snippet<a href="default.htm" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a>
<iframe id="frmright" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="admin_default.htm" frameborder="0" scrolling="yes"></iframe>
全部回复
-
办法一:这个只是警告,可以不用管,也能使用
办法二:
Code Snippet<a href="default.htm" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a>
<iframe id="frmright" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="admin_default.htm" frameborder="0" scrolling="yes"></iframe> -
moneyriver2006 写: 我上MSDN到现在才一共提出了三个问题,其中有两个是你解答的,首先真的非常感谢你!
按照你的方法:
我试了一下,页面却在自身框架内打开了,相当于"_self"了。
这段JS代码我能懂,不知道什么原因达不到预期的效果。
希望大虾能继续指教。谢谢了!
一个原因可能就是default.htm文件里有跳出帧的代码,例如,类似下面的代码:
另外一个原因就是:js代码可能有拼写错误,导致js没有执行。
下面的代码经测试在IE7和FF下都没有问题
Code Snippet<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试页面</title>
</head>
<body>
<form>
Parent窗口
<a href="http://www.g.cn" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a><iframe id="frmright" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="admin_default.htm" frameborder="0" scrolling="yes"></iframe>
</form>
</body>
</html> -
孟宪会 写: 一个原因可能就是default.htm文件里有跳出帧的代码,例如,类似下面的代码:
另外一个原因就是:js代码可能有拼写错误,导致js没有执行。
下面的代码经测试在IE7和FF下都没有问题
Code Snippet<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试页面</title>
</head>
<body>
<form>
Parent窗口
<a href="http://www.g.cn" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a><iframe id="frmright" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="admin_default.htm" frameborder="0" scrolling="yes"></iframe>
</form>
</body>
</html>对不起啊!我可能没有把问题说清楚:
我的这个页面是用于后台管理导航的
一共2个页面:admin_index.htm,admin_left.htm
大致是这样的:
admin_index.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试页面</title>
</head>
<body>
<iframe id="left" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="left.htm" frameborder="0" scrolling="yes"></iframe>
<iframe id="frmright" style="Z-INDEX: 1; VISIBILITY: inherit; width: 100%; height:92%;" src="default.htm" frameborder="0" scrolling="yes"></iframe></form>
</body>
</html>admin_left.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>left页面</title>
</head>
<body>
<form>
<a href="http://www.g.cn" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a>
</form>
</body>
</html>也就是说发出链接请求的超链接是位于 id=“left” 的iframe中的,admin_index.htm一共有两个iframe的。
你的上述代码的执行效果是可以在 frmright 框架中打开Google首页。
但是当以下代码:
<a href="http://www.g.cn" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a>
位于id=“left” 的iframe中时(也就是admin_left页面),google首页在本页面打开了,相当于target=“_self”。
希望大虾继续指导。谢了!
-
汗……
原来是这样啊。
那你改成:
<a href="http://www.g.cn" onclick="window.parent.document.getElementById('frmright').src=this.href;return false;">Click</a>