Response-Befehl verhindert Javascript-Ausführung?




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")



.



Relevant Pages