【问题标题】:When changing iframe src via javascript, the whole page refreshes通过javascript更改iframe src时,整个页面刷新
【发布时间】:2012-12-13 19:57:26
【问题描述】:

在我的 asp.net 应用程序中,我有一个包含两个 iframe 的页面。这些框架上方是一些链接按钮。当这些按钮被点击时,它们应该改变两个 iframe 的 src。下面列出的是我用来执行此操作的客户端代码和 javascript。问题是当这些按钮中的任何一个被点击时,整个页面都会刷新,而不是仅仅更改其中一个 iframe 的 src。 (我可以说这是令人耳目一新的,因为在您登录主框架中显示的第一页之前,链接按钮不可用,在您登录后,通过调用父级按钮变为可见 - window.parent.loginSuccess() )。如果随后单击其中一个,它会将您发送回 iframe 中的登录页面,并且按钮不再可见。)这是代码,有人知道为什么会这样吗?感谢您的帮助。

<body id="bodysty">
<div id="fstyle" class="daform">
    <form id="form1" runat="server">
    <div id="master">
    <div id="topthing"> <asp:LinkButton ID="lbtnControlPanel" onclientclick="CPhit()" runat="server" style="display:none">Control Panel</asp:LinkButton> <asp:LinkButton ID="lbtnAddClient" runat="server" onclientclick="AddClientHit()" style="display:none">Add Client</asp:LinkButton> <asp:LinkButton ID="lbtnManageClients" runat="server" onclientclick="ManageClientsHit()" style="display:none">Manage Clients</asp:LinkButton> <asp:LinkButton ID="lbtnAdmin" runat="server" onclientclick="ManageClientsHit()" style="display:none">Admin Options</asp:LinkButton></div>
    <div id="leftcontrol">
    <iframe id="LeftIframe" runat="server" ></iframe>
        </div>
    <div id="mainbodyform">

    <iframe id="ContentIframe" runat="server" src="Login.aspx" class="mainiframe" ></iframe>
    </div>
    </div>
    </form>
    </div>
</body>
</html>
<script language="javascript">
    function CPhit() {
        document.getElementById("ContentIframe").src = "LoginNotes.aspx";
    }
    function AddClientHit() {
        document.getElementById("ContentIframe").src = "NewCustomer.aspx";
    }
    function loginSuccess() {
        document.getElementById('lbtnControlPanel').style.display = 'inherit'
        document.getElementById('lbtnAddClient').style.display = 'inherit'
        document.getElementById('lbtnManageClients').style.display = 'inherit'
        document.getElementById('lbtnAdmin').style.display = 'inherit'
    }
</script>

代码隐藏中没有处理此页面的代码,它只是用于导航。有任何想法吗?感谢您的帮助。

【问题讨论】:

  • 两个 iframe 中是否有任何代码可能与父框架混淆?框架中的哪些代码可能在 iframe 完成加载时起作用?
  • 有与登录相关的代码,我在框架内的登录页面上使用了 pagemethods 调用 - 所以它检查登录并在有效登录时返回 true,然后调用 loginSuccess父母。这可以正常工作,因为链接按钮随后显示,因为在父页面上点击了 loginSuccess(上面的代码) - 当我在任何链接按钮变得可见后单击它们时,我遇到了这个问题。

标签: javascript asp.net vb.net iframe


【解决方案1】:

您需要取消您正在点击的项目的默认点击动作。

简单的方法是在点击事件上返回 false。

onclientclick="CPhit(); return false;" 

更好的方法是preventDefault()

【讨论】:

  • 谢谢,这成功了。当时间限制已到时,我将接受作为答案。再次感谢。
【解决方案2】:

可能和按钮的行为有关试试

event.stopPropagation() or  window.event.cancelBubble = true 

在你的 JS 函数中

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 2018-02-27
    • 2011-11-15
    • 2018-02-23
    • 2014-03-23
    • 2012-12-04
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多