[OpenLayers - ASP.NET / C#] ordre d'exécution de scripts
Bonjour,
J'utilise OpenLayers pour produire des cartes et y ajouter des couches (layers). Je développe en ASP.NET et c# à l'aide de MS Web Developper 2008.
Dans le head de ma page aspx, j'ai intégré un script dans lequel j'ai mis la fonction d'initialisation (init()), et quelques fonctions pour ajouter des "markers" (ce sont des couches sur lesquelles j'ajoute des icones...).
Prenons un exemple :
Sur la page aspx, j'ai trois fonctions javascript : init() (celle de OpenLayers) qui est chargée lors du chargement du body. Les deux autres fonctions sont appelées à partir du code behind.
Ce que je voudrais faire, c'est exécuter init() avant ces deux fonctions. Le problème est qu'elles s'exécutent après...
Sauriez-vous comment faire ?
Page ASPX :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>Page sans titre</title>
<script type="text/javascript">
var variable1, variable2;
function init()
{
var string = "voila un autre test du body";
alert (string);
}
function test()
{
var i = "voila le test";
alert(i);
}
function ecrire(vari1, vari2)
{
variable1 = vari1;
variable2 = vari2;
alert(variable1 + variable2);
}
</script>
</head>
<body onload="init()">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<script type="text/javascript">test();</script>
</div>
</form>
</body>
</html> |
Page CS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string a = "première variable behind";
string b = "deuxième variable behind";
string script = "<script type=\"text/javascript\">ecrire('" + a + "'" + "," + "'" + b + "');</script>";
Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "scriptTest", script);
}
} |
Je pense que c'est le "RegisterClientScriptBlock" qu'il faut changer. J'ai essayé toutes les méthodes du script manager (Page.ClientScript) mais init() est toujours exécuté en dernier...
Merci beaucoup.