Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将页面从Iframe更改为主窗口_Javascript_Asp.net_.net_Vb.net_Iframe - Fatal编程技术网

Javascript 将页面从Iframe更改为主窗口

Javascript 将页面从Iframe更改为主窗口,javascript,asp.net,.net,vb.net,iframe,Javascript,Asp.net,.net,Vb.net,Iframe,我在一个iframe内工作,当我完成工作时,我想在主窗口中更改页面(不是在iframe内),而是在这个iframe的外侧。 为此,我使用以下子项: Public Sub ChangePage(sender As Object, e As EventArgs) Dim myNewAsp As New AspNetSqlProvider Dim dbHandler As New DBHandler Dim srvHandler As New Serve

我在一个iframe内工作,当我完成工作时,我想在主窗口中更改页面(不是在iframe内),而是在这个iframe的外侧。
为此,我使用以下子项:

Public Sub ChangePage(sender As Object, e As EventArgs)
        Dim myNewAsp As New AspNetSqlProvider
        Dim dbHandler As New DBHandler
        Dim srvHandler As New ServerHandler
        Dim aspProvider As New MyAspNetSqlMembershipProvider
        Dim errAnswer As New Register
        Dim assit As New Assistance
        Dim currentUser As MembershipUser = Nothing
        Dim message As String = Nothing
        Dim msg As String = Nothing
        Try
            Dim url As String = "/Pages/Account/Login.aspx"
            Dim postWindow As Object   ' "/Pages/Account/Assistance.aspx"
            Dim startWindow As Object   ' "/Pages/Support/Asp/Help01.aspx"
            Dim urlURI As String = HttpContext.Current.Request.Url.AbsoluteUri
            Dim urlPath As String = HttpContext.Current.Request.Url.AbsolutePath
            Dim myServerName As String = Strings.Left(urlURI, urlURI.Length - urlPath.Length)
            url = myServerName + url
            startWindow = Me.GetType().FullName
            postWindow = Assistance.PageUrlType
            msg = "Hellow World"
            'msg = "<script type='text/javascript'> $(document).ready(function(){  window.location.href='" + url + "';  }); </script>"
            Dim script As Type = Me.Page.GetType()  '  Assistance.PageType.BaseType 
            Dim postmsg As String = "ChangePage('" & startWindow & "', '" & postWindow & "', '" & msg & "')"
            If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "sendMessage") Then
                Page.ClientScript.RegisterStartupScript(script, "sendMessage", postmsg)
            End If

        Catch eq As SqlException
            srvHandler.ErrorAnswer = DBHandler.GetError(1, Nothing, Nothing, eq, Nothing)
            srvHandler.ErrorAnswer = srvHandler.ErrorAnswer & "\r\n Asp.SQLProvider.ResetPassword "
            ServerHandler._InnerError += srvHandler.ErrorAnswer
            Register.errorCall = True
            Return
        Catch Ex As Exception
            srvHandler.ErrorAnswer = DBHandler.GetError(3, Ex, Nothing, Nothing, Nothing)
            srvHandler.ErrorAnswer = srvHandler.ErrorAnswer & "\r\n Asp.SQLProvider.ResetPassword"
            ServerHandler._InnerError += srvHandler.ErrorAnswer
            Register.errorCall = True
            Return

        End Try
    End Sub
在我要更改的页面(父页面)中,我还使用以下脚本:


window.addEventListener(“消息”,receiveMessage,false);
函数接收消息(事件){
event.origin!==消息;
event.source.postMessage(“'”+message+“'”,event.origin);
返回;
}
我从上面得到的是将所需页面(示例中的消息)放在框架内。
Help01.aspx页面中的纸条执行得很好。但是在这个窗口中,而不是在父窗口中(Assistance,aspx)
因此,我无法跳出iFrame(在表中)。

有人知道该怎么办吗

我想你需要像这里这样的东西。这取决于您需要支持的浏览器,但支持非常好。这将允许您在主窗口和iFrame之间进行“对话”

该链接将指导您如何设置它,但其要点是您需要将事件侦听器附加到主窗口,然后将消息从iFrame发布到外部窗口。然后,当消息传入时,在外部窗口中执行重定向


因此,如果您有
Dim msg As String…
您希望它是一些将消息发布到外部框架的代码。类似于
window.postMessage(..)

亲爱的@Zero21xxx,经过长时间的等待。。。在代码中做一些其他事情,我开始处理您的提案。我真的不知道怎么做。。。我的意思是我不知道如何实现这个解决方案的代码。我读了很多关于它的东西,但我不知道该怎么办。。。有没有可能给我任何帮助?
<script type="text/javascript">
     function ChangePage(startPage, sendPage, message) {
         var sPage = document.getElementById(startPage);
         sPage.contentWindow.postMessage(message, sendPage);
     }
    </script>
<script type="text/javascript">
    window.addEventListener("message", receiveMessage, false);
    function receiveMessage(event) {
        event.origin !== message;
        event.source.postMessage("'" + message + "'", event.origin);
            return;
    }