ASP.NET (с использованием VB.NET для кода позади) Проблема с фреймами

Я использую фреймы для своего веб-приложения. Описание (1)Левый фрейм со списком кнопок (нажатие на них открывает веб-страницу в правом фрейме) (2)Правый фрейм, открывает веб-страницу, проходящую через левый фрейм.


Проблема: Нажатие кнопки отлично работает в Internet Explorer 8.0 на рабочем компьютере, Windows XP, 32-разрядная версия.

Событие нажатия кнопки ничего не открывает в правом фрейме, просто остается как есть в Firefox, Chrome, Internet Explorer 9.0


Исходный код, загружающий фреймы

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="frmMain.aspx.vb" Inherits="XYZ" smartNavigation="True"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"  http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <TITLE>frmMain</</TITLE>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<frameset COLS="20%,80%">
    <frame name="frame1" src="frmbuttons.aspx">
    <frame name="frame2" src="frmbegin.aspx">
</frameset>

Example code (for a button in left frame):

Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Dim url As String = String.Empty
url = "test.aspx"
Dim frameScript As String = "<script language='javascript'>" & "window.parent.frames(1).location='" & url & "';</script>"

ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "FrameScript", frameScript, False)
end sub

Любая помощь будет оценена.


person Sree    schedule 23.08.2011    source источник
comment
Какое сообщение об ошибке (если есть) вы видите в окне консоли браузера? Я не думаю, что использование круглых скобок для индексации массива является допустимым JavaScript...   -  person Chris Shouts    schedule 23.08.2011


Ответы (2)


Я нашел решение. Этот код вызывает ошибку:

Dim frameScript As String = "window.parent.frames(1).location='" & url & "'"

В приведенной выше строке есть ошибка в window.parent.frames(1) из-за круглых скобок (); правильным решением этой проблемы будет:

Этот код правильный:

Dim frameScript As String = "window.parent.frames[1].location='" & url & "'"

VB.Net использует круглые скобки для доступа к индексу массива, но Javascript использует квадратные скобки. Как только я изменил синтаксис на правильный, код заработал нормально во всех браузерах.

person Sree    schedule 25.08.2011

Ты пытался:

Dim frameScript As String = "window.parent.frames(1).location='" & url & "'"
ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "FrameScript", frameScript, False)

По моему опыту работы с ScriptManager, мне никогда не нужны были теги, и они всегда работали в IE, Chrome и FF.

person Itskiddly    schedule 23.08.2011
comment
Последний параметр, переданный в RegisterStartupScript, — bool addScriptTags. В данном случае параметр равен false, поэтому необходимы теги <script>. - person Chris Shouts; 23.08.2011
comment
Привет всем, я попробовал эти предложения (проверено несколько раз), но проблема все еще сохраняется. Я очень ценю ответы. Любые другие предложения приветствуются. - person Sree; 25.08.2011