【问题标题】:ASP.NET (using VB.NET for code behind) Frames issueASP.NET(使用 VB.NET 进行代码隐藏)框架问题
【发布时间】:2011-11-02 03:56:28
【问题描述】:

我正在为我的 Web 应用程序使用框架。 描述 (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>

示例代码(左框架中的按钮):

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

任何帮助将不胜感激。

【问题讨论】:

  • 您在浏览器的控制台窗口中看到了什么错误消息(如果有)?我不认为使用括号来索引数组是有效的 JavaScript...

标签: javascript asp.net vb.net frames


【解决方案1】:

我找到了解决方案。此代码导致错误:

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 使用方括号。一旦我更改为正确的语法,代码在所有浏览器中都可以正常工作。

【讨论】:

    【解决方案2】:

    你试过了吗:

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

    根据我使用 ScriptManager 的经验,我从来不需要标签,它总是在 IE、chrome 和 FF 中工作。

    【讨论】:

    • 传递给RegisterStartupScript的最后一个参数是bool addScriptTags。本例中参数为false,所以&lt;script&gt;标签是必须的。
    • 大家好,我已经尝试了这些建议(多次验证),但问题仍然存在。我非常感谢您的回复。欢迎提出任何其他建议。
    猜你喜欢
    • 2012-07-21
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2011-06-08
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多