代码之家  ›  专栏  ›  技术社区  ›  Faruz

ASP.Net:从框架内获取页面url

  •  1
  • Faruz  · 技术社区  · 14 年前

    如何从框架内获取顶部页面的URL?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Guffa    14 年前

    你不能。

    页面将加载到另一个页面中的iframe的事实不会在请求中发送到服务器,因此无法获取父页面的ULR,甚至无法确定是否存在父页面。

    如果在服务器端需要这些信息,则必须将这些信息添加到请求中,例如,将父页面URL作为querystring参数包含在内。

        2
  •  1
  •   kubilay    13 年前

    如果人们需要它,有一种方法可以达到这个目的。至少我解决了。

    首先,放置一个在服务器上运行的按钮,添加一个click事件和一个client click事件。

    <asp:Button ID="btnFindParentUrl" runat="server" Text="Get Url!" OnClick="btnFindParentUrl_Click" OnClientClick="fillHidden();" />
    

    将隐藏的文本框放入 style="display: none;" Visible="false" 对于按钮,因为如果您这样做,客户端无法看到并填充它):

    <div style="display: none;">
        <asp:TextBox ID="txtHiddenUrlField" runat="server" BorderStyle="None" Font-Size="0px" ForeColor="#F6F6F6" Height="0px" Width="0px"></asp:TextBox>
    </div>
    

    现在放置javascript代码 fillHidden()

    <script type="text/javascript">
        function fillHidden() {
            document.getElementById('<%= txtHiddenUrlField.ClientID %>').value = parent.document.location.href;
        };
    </script>
    

    这就是你在客户端要做的一切。

    protected void btnFindParentUrl_Click(object sender, EventArgs e)
    {
        string parentUrl = txtHiddenUrlField.Text;
    }
    

    这样,您应该从iframe中的按钮获取父url。

    任何需要帮助的人都可以在这里提问 this code's post 在我的个人网站上。

        3
  •  0
  •   Andrew dh    14 年前

    如果frame+父级都在同一个域上,则可以执行此操作。如果是,则可以获取对其他iframe、frames或弹出窗口的引用。

    从内存中,尝试window.parent,这样您的文件就类似于window.parent.top.location

    推荐文章