Response-Befehl verhindert Javascript-Ausführung?
- From: "Michael W. Welling" <werbung_hierhin@xxxxxxxxxxx>
- Date: Fri, 6 Jan 2006 14:06:18 +0100
Hallo NG'ler!
ich habe das Problem dass mein RESPONSE-Befehl in der
ASPX-Seite die Ausführung des folgenden JAVASCRIPTS
verhindert.
Hintergrund:
- Ich "injiziere" mittels des
RESPONSE.REGISTERSTARTUPSCRIPT-Befehls Javascript in eine
aufrufende Seite
- Dieses Script öffnet eine weitere Seite als PopUp
- Das hat allerdings einen Postback zu Folge.
- Wenn die aufrufende Seite viel Content hat bzw. viel Code
abgearbeitet werden muss, vielleicht sogar mit
Datenbank-Zugriff, dauert das Länger als die Popup-Seite
aufzubauen.
- Folge daraus ist, dass das PopUp in den Hintergrund
verschwindet.
- mit dem Folgenden Code habe ich es bei allen anderen
PopUp's erreicht, dass sie sich wieder in den Fordergrund
schieben. (mit onBlur auch immer dann wenn es den Fokus
verliert, also quasi ein modales Fenster)
- Nur nicht bei diesem einen PopUp-Formular, welches
beliebige Dateien und Streams anzeigt.
- Einziger Unterschied zu allen anderen Forms ist hier die
Verwendung des Response-Befehl (siehe Listing unten).
Kommentiere ich die Zeilen aus, funktioniert es (habe aber
natürlich eine leere Seite).
Das lässt mich vermuten, dass der RESPONSE-Befehl die
Ausführung von Javascript unterbricht.
Ist das so? Und wie kann ich das Problem lösen? ich nutze
Javascript nur sehr rudimentär!
Der Quellcode steht weiter unten und kann so komplett
verwendet werden (wen's interessiert oder nachbauen will)
Vielen Dank für Eure Antworten und das Opfern eurer Zeit!
Gruß
Michael
||||||| HTML des POPUP-Formular
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<HTML>
<HEAD>
<title>safety works -> Datei anzeigen</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">
<script language="javascript">
function closeme() { self.close(); }
function autocloseme() {
setTimeout("self.close();",60000); }
function StartUp() {
self.setTimeout("self.focus()",10); }
function selfFocus() { if (window.focus)
window.focus(); }
</script>
</HEAD>
<body MS_POSITIONING="FlowLayout" onblur="window.focus()"
onload="StartUp()">
<form id="Form1" method="post" runat="server">
</form>
</body>
</HTML>
||||||| Funktion in der ASPX-Seite "Page_Load"
(POPUP-Formular)
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'****************************************************************************
Private _
Sub Page_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
#If TraceMode = "on" Then
myLOG.Write(New System.Diagnostics.StackTrace)
#End If
Try
Dim sessionname as String = ""
'****************************************************************************
'* Datei-Herkunft ermitteln
Dim sourcetype as String = ""
sessionname = "File.SourceType"
If Session.Item(sessionname) Is Nothing = True Then
sourcetype = "memorystream"
Else
sourcetype = Session.Item(sessionname).ToString()
'* Session-Variable löschen
Session.Remove(sessionname)
End if
'****************************************************************************
'* Datei-Art ermitteln
Dim ContentType As string = ""
sessionname = "File.ContentType"
If Session.Item(sessionname) Is Nothing = True Then
ContentType = "text/plain"
Else
ContentType = Session.Item(sessionname).ToString()
'* Session-Variable löschen
Session.Remove(sessionname)
End If
'****************************************************************************
'* Datei ermitteln
sessionname = "File.Source"
Select Case sourcetype.ToLower
'**********************************************************************
Case "memorystream".ToLower
'* Stream aus Session auslesen
Dim source As New System.IO.MemoryStream
source = CType(Session.Item(sessionname), _
System.IO.MemoryStream)
'* Session-Variable löschen
Session.Remove(sessionname)
'* Stream anzeigen
source.Position = 0
Response.ContentType = ContentType.ToString()
Response.BinaryWrite(source.ToArray())
Response.End()
Case "filename".ToLower
'* DateiName aus Session auslesen
Dim source As string = ""
source = Session.Item(sessionname).ToString()
'* Session-Variable löschen
Session.Remove(sessionname)
'* Je Nach Dateityp den ContentTyp einstellen
Dim fileextension as String = ""
fileextension = System.IO.Path.GetExtension(source)
fileextension = fileextension.Trim(".".ToCharArray)
Select case fileextension.ToLower
'*******************************************************************
Case "css", "rtx", "xml"
ContentType = "text/" & fileextension
Case "html", "htm"
ContentType = "text/html"
Case "asc", "txt"
ContentType = "text/plain"
Case "sgml", "sgm"
ContentType = "text/sgml"
'*******************************************************************
Case "bmp", "gif", "ief", "png"
ContentType = "image/" & fileextension
Case "jpeg", "jpg", "jpe"
ContentType = "image/jpeg"
Case "tiff", "tif"
ContentType = "image/tiff"
Case "ras"
ContentType = "image/x-cmu-raster"
'*******************************************************************
Case "doc"
ContentType = "application/msword"
Case "pdf"
ContentType = "application/" & fileextension
Case "rtf"
ContentType = "application/rtf"
Case "xls"
ContentType = "application/vnd.ms-excel"
Case "ppt"
ContentType = "application/vnd.ms-powerpoint"
Case else
End Select
'* Datei anzeigen
Response.ContentType = ContentType.ToString()
Response.WriteFile(source)
End select
Catch exp As Exception
myErrLog.Errors.Add(exp, exp.TargetSite.GetCurrentMethod)
End Try
End Sub
|||||Aufrufende Funktion (öffenendesPOPUP'S)
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Public _
Function Show_pop_File( _
byval myPage as Page, _
byval memorystream as System.IO.MemoryStream, _
byval contenttype as string) _
As Integer
#If TraceMode = "on" Then
myLOG.Write(New System.Diagnostics.StackTrace)
#End If
Dim res As Integer = 0
Try
'* Wenn keine Datei-Art übergeben wurde, ...
If contenttype.Length = 0 then
contenttype = "text/plain"
End If
'* Quelle in Session speichern
myPage.Session.Add("File.SourceType", "memorystream")
myPage.Session.Add("File.Source", memorystream)
myPage.Session.Add("File.ContentType", contenttype)
'* Hilfs-Variablen definieren
Dim txt As New StringBuilder
'* JavaScript generieren
txt.Append("<script language='javascript'>")
txt.Append("f = window.open")
txt.Append("(")
txt.Append("'../../!frm/pop_File.aspx',")
txt.Append("'',")
txt.Append("'")
txt.Append("alwaysRaised=yes,")
txt.Append("width=750,")
txt.Append("height=750,")
txt.Append("directories=no,")
txt.Append("toolbar=no,")
txt.Append("location=no,")
txt.Append("menubar=no,")
txt.Append("scrollbars=yes,")
txt.Append("status=no,")
txt.Append("resizable=yes,")
txt.Append("dependent=yes,")
txt.Append("dialog=yes,")
txt.Append("modal=yes")
txt.Append("'")
txt.Append(");")
txt.Append("</script>")
'* JavaScript ausführen
myPage.RegisterStartupScript(key:="show_pop_file", _
script:=txt.ToString())
Catch exp As Exception
res = -1
End Try
Return res
End Function
||||| Aufruf einesPopup's
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dim stm AsSystem.IO.MemoryStream
stm = NewSystem.IO.MemoryStream
stm = [irgendeinMemoryStreamObjekt]
Dim res as integer=0
res=Show_pop_File(me, stm, "application/pdf")
.
- Follow-Ups:
- Re: Response-Befehl verhindert Javascript-Ausführung?
- From: Michael W. Welling
- Re: Response-Befehl verhindert Javascript-Ausführung?
- From: Michael W. Welling
- Re: Response-Befehl verhindert Javascript-Ausführung?
- Prev by Date: Re: Fehler im IE bei: void(window.open(..));
- Next by Date: Re: Regulärer Ausdruck
- Previous by thread: Regulärer Ausdruck
- Next by thread: Re: Response-Befehl verhindert Javascript-Ausführung?
- Index(es):
Relevant Pages
|