FineUI 官方论坛

标题: 【已解决】求教:自定义一个菜单 想用JS刷新 iframe [打印本页]

作者: 虫豸    时间: 2013-3-18 09:59
标题: 【已解决】求教:自定义一个菜单 想用JS刷新 iframe
用HTML自定义了一个菜单,我想通过点击菜单项来刷新 panel的 iframeURL
HTML的菜单不是FineUI控件所以我不能在后台设置iframeURL,所以我只能用JS来设置。
看了下源码
        public string GetRefreshIFrameReference()
        {
            return String.Format("{0}.body.query('iframe')[0].contentWindow.location.reload();", ScriptID);
        }

我换成JS代码如下:
var v=Ext.getCmp("RegionPanel1_Region2");
v.body.query('iframe')[0].src="http://www.google.com";
v.body.query('iframe')[0].contentWindow.location.reload();
结果还是没刷新页面。


哪位同仁碰到过这样的需求 帮忙解答下。





作者: sanshi    时间: 2013-3-19 02:28
把页面的ASPX代码贴一下
作者: 虫豸    时间: 2013-3-19 03:39
本帖最后由 虫豸 于 2013-3-19 04:15 编辑

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="YFKindergarten.Demo" %>

<!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>
    <script type="text/javascript">
        function reload() {
            //刷新iframeURL
            var iframeT = Ext.getCmp("RegionPanel1_Region2");
            iframeT.src = "http://www.baidu.com";
            iframeT.body.query('iframe')[0].contentWindow.location.reload()
        }
    </script>

    <style type="text/css">
        li{ float:left}
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <ext:PageManager ID="PageManager1" runat="server" AutoSizePanelID="RegionPanel1"/>
        <ext:RegionPanel ID="RegionPanel1" runat="server" ShowBorder="false">
            <Regions>
                <ext:Region ID="Region1" runat="server" Position="Top" ShowHeader="true" Split="false" Height="200px">
                    <Items>
                        <ext:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="5px" ShowBorder="true"
                            ShowHeader="true" Title="ContentPanel">                        
                            <ol>
                                    <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                            </ol>

                        </ext:ContentPanel>
                    </Items>
                </ext:Region>
                <ext:Region ID="Region2" runat="server" Position="Center" ShowHeader="true" Title="Center Region"
                 EnableIFrame="true">
                </ext:Region>
            </Regions>
        </ext:RegionPanel>
    </form>
</body>
</html>


作者: sanshi    时间: 2013-3-19 14:45
更新后的代码:
  1. <!DOCTYPE html>
  2. <head runat="server">
  3.     <title></title>
  4. </head>
  5. <body>
  6.     <form id="form1" runat="server">
  7.     <x:PageManager ID="PageManager1" runat="server" AutoSizePanelID="RegionPanel1" />
  8.     <x:RegionPanel ID="RegionPanel1" runat="server" ShowBorder="false">
  9.         <Regions>
  10.             <x:Region ID="Region1" runat="server" Position="Top" ShowHeader="true" Split="false"
  11.                 Height="200px">
  12.                 <Items>
  13.                     <x:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="5px" ShowBorder="true"
  14.                         ShowHeader="true" Title="ContentPanel">
  15.                         <ol>
  16.                             <li><a href="javascript:reload('http://www.baidu.com')">刷新iframe</a></li>
  17.                             <li><a href="javascript:reload('http://fineui.com/bbs')">刷新iframe</a></li>
  18.                         </ol>
  19.                     </x:ContentPanel>
  20.                 </Items>
  21.             </x:Region>
  22.             <x:Region ID="Region2" runat="server" Position="Center" ShowHeader="true" Title="Center Region" IFrameUrl="about:blank;"
  23.                 EnableIFrame="true">
  24.             </x:Region>
  25.         </Regions>
  26.     </x:RegionPanel>
  27.     </form>
  28.     <script type="text/javascript">
  29.         function reload(url) {
  30.             var region2 = Ext.getCmp('<%= Region2.ClientID %>');
  31.    var iframe = region2.body.query('iframe')[0];
  32.             iframe.src = url;
  33.         }
  34.     </script>
  35. </body>
  36. </html>
复制代码

注意:
1. 要设置 IFrameUrl="about:blank;" ,否则不会渲染 iframe 节点
2. Ext.getCmp得到的是extjs组件对象,而我们要找的是其中的iframe节点:region2.body.query('iframe')[0]


作者: 虫豸    时间: 2013-3-19 15:40
谢谢三石兄 {:soso_e183:}
作者: yygy    时间: 2013-3-19 16:03
留个印记

作者: 过往烟云    时间: 2013-3-21 04:38
不错  用处比较多
作者: JucaiYang    时间: 2013-3-24 04:15
保存一下先,以后用。
作者: 直尺画圆    时间: 2013-4-19 15:59
不错,收藏
作者: 不思议手    时间: 2013-6-7 17:57
本帖最后由 不思议手 于 2013-6-7 18:00 编辑

我想问呢,如果这个刷新不是在同一个页面,而是在另一个页面,要怎样才可以做到刷新那个frame呢?
我的帖子,http://www.fineui.com/bbs/forum.php?mod=viewthread&tid=3170&extra=

作者: F壹    时间: 2013-6-8 17:11
sanshi 发表于 2013-3-19 14:45
更新后的代码:

注意:

三石兄,看了你的很多代码,发现框架果真是越用越好用,js完美应用能解决相当多的问题,而且还能自己加些js的控件进去。
作者: asp.net    时间: 2013-6-8 21:14
MARK MARK
作者: 舞柯庶    时间: 2013-6-14 11:47
留记号{:soso_e179:}




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4