none
请教一个关于 iframe 的问题 RRS feed

  • 问题

  •  

    在做静态页面或者是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的功能的新的构造是什么啊?先谢谢了!



     

    2008年4月7日 9:06

答案

  •  

    办法一:这个只是警告,可以不用管,也能使用

    办法二:

    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>

     

     

    2008年4月7日 9:21
    版主

全部回复

  •  

    办法一:这个只是警告,可以不用管,也能使用

    办法二:

    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>

     

     

    2008年4月7日 9:21
    版主
  • 在VS2005中不建议用iframe,否则你必须放宽DOCTYPE,或者忽略编译警告。

    对于页面内的重复内容嵌套,建议使用UserControl和MasterPage解决。
    2008年4月7日 9:26
  • 你的验证框架是默认的XHTML吗?把它改成IE6看看会不会有这个提示了,就在工具栏上有一个下拉列表选项。

    2008年4月7日 14:30
  •  

    我上MSDN到现在才一共提出了三个问题,其中有两个是你解答的,首先真的非常感谢你!

    按照你的方法:

    <a href="default.htm" onclick="document.getElementById('frmright').src=this.href;return false;">Click</a>

    我试了一下,页面却在自身框架内打开了,相当于"_self"了。

    这段JS代码我能懂,不知道什么原因达不到预期的效果。

    希望大虾能继续指教。谢谢了!

     

     

    2008年4月8日 14:54
  •  moneyriver2006 写:

     

    我上MSDN到现在才一共提出了三个问题,其中有两个是你解答的,首先真的非常感谢你!

    按照你的方法:

    Click

    我试了一下,页面却在自身框架内打开了,相当于"_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>

     

     

    2008年4月8日 15:38
    版主
  •  孟宪会 写:

    一个原因可能就是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”。

    希望大虾继续指导。谢了!

     

    2008年4月10日 6:36
  • 汗……

    原来是这样啊。

    那你改成:

    <a href="http://www.g.cn" onclick="window.parent.document.getElementById('frmright').src=this.href;return false;">Click</a>

     

    试试?
    2008年4月10日 6:53
  • 说清楚才能解决

    2008年4月10日 6:59
    版主
  • 那段js加上parent就可以了。

    我的JS确实太差了,自己不会动脑筋,下去得多找几本JS看。

    非常感谢孟宪会大虾 和版主的指点。我记住了,以后一定要把问题讲清楚。

    希望二位以后多多关照了!

     

    2008年4月11日 0:46
  • 只能说,iframe在实际项目里面要谨慎使用,否则会对项目的可维护性造成影响,vs05里面要选择比较宽松的验证方式,否则很可能因为一些细节问题导致项目编译失败
    2008年5月4日 9:33