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


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


Проблема: кнопка click отлично работает в 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>

Пример кода (для кнопки в левой рамке):

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
Любая помощь будет оценена по достоинству.
2 2

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 использует квадратные скобки. Как только я перешел на правильный синтаксис, код отлично работал во всех браузерах.

Вы пробовали:

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

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