29 messaggi dal 22 maggio 2006
Buongiorno a tutti,
sto cercando di rilevare la risoluzione del browser.
Ho fatto diverse ricerche su internet ed ho scoperto che ahime' questa cosa non è fattibile attraverso ASP ma c'è bisogno di coinvolgere JS per poterlo fare. Ho implementato la cosa però ho qualche problemino.
Vorrei raccogliere queste informazioni quando la pagina viene caricata e possibilmente senza redirect (soluzione proposta da qualcuno); il problema sta nel fatto che non riesco a capire quando alcuni eventi scattano per esempio sull'oggetto body. Per esempio ho implementato il seguente codice:

<body oninit="document.form1.screenHeight.value = window.screen.height;document.form1.screenWidth.value = window.screen.width;">
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
<asp:hiddenfield id="screenHeight" value="" runat="server"/>
<asp:hiddenfield id="screenWidth" value="" runat="server"/>
</form>
</form>
</body>

Protected Sub screenHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles screenHeight.ValueChanged
Label1.Text = screenHeight.Value
End Sub

Protected Sub screenWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles screenHeight.ValueChanged
Label1.Text = screenWidth.Value
End Sub

Come vedete ho raccolto le informazioni da javascript sull'evento oninit del body assegnando i valori raccolta da js a due hiddenfield. Rilevo i cambianti degli hidden e assegno i valori a due label.

Non funziona. Poichè la oninit non scatta.
Spero di essere stato chiaro, avete qualche suggerimento da darmi?
637 messaggi dal 12 agosto 2005
Provi a sostituire "oninit" con "onload". Secondo MSDN e il sito del W3, "body" non prevede "oninit", ma in effetti VS2005 lo indica... non saprei, magari è un'imprecisione dell'IDE.
29 messaggi dal 22 maggio 2006
Grazie per la risposta ma purtroppo non va.
La cosa bella è che se inserisco un altro scrip che scatta per esempio sul click di un bottone, quando clicco sul bottone scatta anche l'altro.

637 messaggi dal 12 agosto 2005
Posso allora suggerirle di ricorrere a Page.ClientScript.RegisterStartupScript.

In pratica invochi questo metodo nel Page_Load e passi come argomento lo script che vuole eseguire:

protected void Page_Load(object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "screen", "funzioneJS()");
    }


Il secondo parametro è fittizio, serve solo a contraddistinguere lo script da registrare.
29 messaggi dal 22 maggio 2006
Grazie,
ma anche così non va.
La cosa bella è che ho aggiunto degli alert per visualizzare le variabili e sono valorizzate; quindi questo vuol dire che va ma IIS ha già prodotto l'output, in fase di debug comunque le variabili non risultano essere valorizzate. Se nella stessa funzione js aggiungo un document.write sul documento viene stampata la cosa.
637 messaggi dal 12 agosto 2005
Forse sto prendendo una svista colossale, ma in effetti nel suo codice:

<asp:HiddenField id="screenHeight" value="" runat="server"/> 
<asp:HiddenField id="screenWidth" value="" runat="server"/>


Non v'è alcuna indicazione di come associare l'evento "ValueChanged". Cioè dovrebbe invece essere scritto:

<asp:HiddenField id="screenHeight" value="" runat="server" OnValueChanged="screenHeight_ValueChanged"/> 

<asp:HiddenField id="screenWidth" value="" runat="server" OnValueChanged="screenWidth_ValueChanged"/>


Provi così.
non vorrei dire una castroneria, ma impostando il valore di una HiddenFiled via codice (e non si può fare diversamente) gli eventi non vengono generati.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
29 messaggi dal 22 maggio 2006
Grazie Marco,
L'osservazione è corretta avevo io omesso qualcosa, ma l'evento scatta, per completezza posto tutto il codice (non è troppo ordinato) se sei curioso e provi a mandarlo in esecuzione vedrai le differenze per esempio nel html generato.

Per curiosità mandalo in esecuzione e poi premi sul pulsante "Click Me (Senza ScriptManager)!" guarda le differenze!?
Tieni conto del fatto anche se penso che la cosa sia ininfluente che nella directory bin ho atlas.

FILE: STATS.ASPX

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Stats.aspx.vb" Inherits="Stats" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Statistiche</title>
</head>
<body>
<%-- onload="document.form1.screenHeight.value = window.screen.height;document.form1.screenWidth.value = window.screen.width;">--%>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label4" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label5" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label6" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label7" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label8" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label9" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label10" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label11" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label12" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label13" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label14" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label15" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label16" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label17" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label18" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label19" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label20" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label21" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label22" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label23" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label24" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label25" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label26" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label27" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label28" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label29" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label30" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label31" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label32" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label33" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label34" runat="server" Text="Label"></asp:Label><br />
<asp:Button ID="Button1" OnClientClick='javascript:alert("clicked!")' Text="Click Me (Senza ScriptManager)!" runat="server" />
<asp:Label ID="Label35" runat="server" Text="Old Value"/><br />
<asp:TextBox ID="TextBox1" runat="server" Text="Sample Text" /><br />
<asp:HiddenField ID="screenHeight" Value="" runat="server" /><br />
<asp:HiddenField ID="screenWidth" Value="" runat="server" /><br />
<input type="text" id="Message"><br />
<input type="button" value="ClickMe (Con ScriptManager)" onclick="DoClick()"><br />
<asp:Label ID="Label36" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label37" runat="server" Text="Label"></asp:Label><br />
</form>
</body>
</html>


FILE: STATS.ASPX.VB


Partial Class Stats
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim i As Integer
Label1.Text = "UserHostAddress:" + Request.UserHostAddress
Label2.Text = "UserAgent:" + Request.UserAgent
Label3.Text = "UserHostName:" + Request.UserHostName
Label4.Text = "UserLanguages:"
For i = 0 To Request.UserLanguages.Length - 1
Label4.Text = Label4.Text + "," + Request.UserLanguages(i).ToString
Next i
Label5.Text = "RequestType:" + Request.RequestType
Label6.Text = "LogonUserIdentity.User:" + Request.LogonUserIdentity.Name
Label7.Text = Page.User.Identity.Name
With Request.Browser
Label8.Text = "Type = " & .Type
Label9.Text = "Name = " & .Browser
Label10.Text = "Version = " & .Version
Label11.Text = "Major Version = " & .MajorVersion
Label12.Text = "Minor Version = " & .MinorVersion
Label13.Text = "Platform = " & .Platform
Label14.Text = "Is Beta = " & .Beta
Label15.Text = "Is Crawler = " & .Crawler
Label16.Text = "Is AOL = " & .AOL
Label17.Text = "Is Win16 = " & .Win16
Label18.Text = "Is Win32 = " & .Win32
Label19.Text = "Supports Frames = " & .Frames
Label20.Text = "Supports Tables = " & .Tables
Label21.Text = "Supports Cookies = " & .Cookies
Label22.Text = "Supports VBScript = " & .VBScript
Label23.Text = "Supports JavaScript =" + .EcmaScriptVersion.ToString()
Label24.Text = "Supports Java Applets = " & .JavaApplets & vbCrLf
Label25.Text = "Supports ActiveX Controls = " & .ActiveXControls
Label26.Text = "ScreenPixelsHeight = " & .ScreenPixelsHeight
Label27.Text = "ScreenPixelsWidth = " & .ScreenPixelsWidth
End With
If Not IsNothing(Request.UrlReferrer) Then
With Request.UrlReferrer
Label28.Text = .AbsolutePath
Label29.Text = .AbsoluteUri
Label30.Text = .Authority
Label31.Text = .DnsSafeHost
Label32.Text = .Host
Label33.Text = .HostNameType
Label34.Text = .IsLoopback
End With
End If
'----------------------------------------------------------
' Define the name and type of the client scripts on the page.
Dim csname1 As String = "PopupScript"
Dim csname2 As String = "ButtonClickScript"
Dim cstype As Type = Me.GetType()

' Get a ClientScriptManager reference from the Page class.
Dim cs As ClientScriptManager = Page.ClientScript

' Check to see if the startup script is already registered.
If (Not cs.IsStartupScriptRegistered(cstype, csname1)) Then

Dim cstext1 As String = "document.write(window.screen.height);alert('Hello World');document.form1.screenHeight.value = window.screen.height;document.form1.screenWidth.value = window.screen.width;alert(document.form1.screenHeight.value);alert(window.screen.height);alert(document.form1.screenWidth.value);alert(window.screen.width);"
cs.RegisterStartupScript(cstype, csname1, cstext1, True)

End If

' Check to see if the client script is already registered.
If (Not cs.IsClientScriptBlockRegistered(cstype, csname2)) Then

Dim cstext2 As New StringBuilder()
cstext2.Append("<script type=text/javascript> function DoClick() {")
cstext2.Append("form1.Message.value='Text from client script.'} </")
cstext2.Append("script>")
cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), False)

End If
End Sub
Protected Sub screenHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles screenHeight.ValueChanged
Label36.Text = screenHeight.Value
End Sub
Protected Sub screenWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles screenWidth.ValueChanged
Label37.Text = screenWidth.Value
End Sub
End Class

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.