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