通过javascript更改iframe src时,整个页面会刷新

时间:2012-12-13 19:57:27

标签: javascript asp.net vb.net iframe

在我的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>

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

2 个答案:

答案 0 :(得分:2)

您需要取消所点击项目的默认点击操作。

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

onclientclick="CPhit(); return false;" 

更好的方法是preventDefault()

答案 1 :(得分:0)

它可能与按钮Try

的行为有关
event.stopPropagation() or  window.event.cancelBubble = true 
你的JS函数中的