2011-03-10 30 views
1

我試圖加載以下JS方法:負荷運行JS的方法從後面的代碼

<script type="text/javascript"> 
    function initialize(lon,lat) { 
    var myLatlng = new google.maps.LatLng(lon,lan); 
    var myOptions = { 
    zoom: 14, 
    center: myLatlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    var map = new google.maps.Map(document.getElementById("map"), myOptions); 

    var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map 
    }); 
    } 
</script> 

在我背後VB.NET代碼,然後我想要加載,如:

initialize(53.349803617967446, -6.260257065296173) 

我需要加載代碼,因爲我必須從數據庫中獲取longtidude和latidude。

回答

1

另查克的建議 - 你可以保持功能在.aspx和寫出來的值直接插入JavaScript的使用內嵌代碼,如下所示:

initialize(<%=strLat%>, <%=strLon%>) 

strLat和strLon將被定義爲在您的代碼隱藏受保護的變量。

如果您確實希望整個函數由代碼隱藏書寫出來,請查看RegisterClientScriptBlock方法。

1

直接從後面的代碼調用Javascript函數通常不是最佳實踐。後面的代碼是在頁面呈現之前發生的代碼。

我會做的是添加兩個隱藏文字到您的頁面latitudelongitude,並調用DOM準備事件的初始化函數。初始化函數將從創建的文字中檢索緯度/經度值。

Here is a good resource瞭解DOM ready事件,如果您不熟悉。

編輯:如果上面是不是一種選擇,你可以從代碼隱藏在一個相當迂迴的方式「呼」它(這幾乎是功能上等同於我的其他解決方案)。

<body runat="server"> 

使你的身體標記看起來像,然後添加這隱藏代碼:

var javascriptFunction = string.format("javascript:initialize({0}, {1})", latValue, longValue); 
Body.Attributes.Add("Onload", javascriptFunction); 
0

您可以使用RegisterClientScriptBlock從代碼隱藏中將JavaScript插入到頁面中。

你將它插入裏面你想從註冊它的任何功能,並格式化這樣的:

ClientScriptManager.RegisterClientScriptBlock(typeof(this), "SomeKeyName", "initialize(" + lat + "," + long + ");", true); 

其中SomeKeyName是一個獨特的密鑰,防止腳本被添加超過每回傳一次。

0

如果您必須同時在代碼隱藏中註冊函數和調用,則您需要使用函數ScriptManager.RegisterClientScriptBlock和函數調用ScriptManager.RegisterStartupScript。如果函數的渲染不依賴於服務器代碼中的任何內容,那麼最好不要從代碼註冊它。