簡體   English   中英

從CodeBehind文件中調用JS函數

[英]Call JS function from CodeBehind file

我無法從文件后面的代碼訪問Javascript函數。 我需要執行此操作,因為我正在使用GoogleMaps JS API根據從數據庫中檢索到的地址向地圖添加標記。 我有一個名為AddMarker的函數,該函數將地址作為參數,因此我需要能夠從page_load函數中文件后面的代碼中調用該函數。

為了簡化問題,我如何調用此javascript函數以顯示警報,其中包含從文件后面的代碼傳遞的字符串?

function hello(message)
{
alert(message)
}

提前致謝!

PS VB或C#都可以:)

那應該做:

 protected void Page_Load(object sender, EventArgs e) 
 { 
     string bing = "link";
     Response.Write(@"<script language='javascript'>alert(bing);</script>");
 }

我不確定這是否是最佳做法,但是在定義好之后,您可以在頁面中的某個位置呈現對JS函數的調用。

或者,您可以使用jQuery將呼叫延遲,直到頁面中的所有內容都呈現為止。

所以

<script type="text/javascript">

$(document).ready(function(){

hello("myAspString");

});

</script>

用您的內容替換myAspString,確保保留JS所需的引號。

此代碼將導致使用后面的代碼中的值調用函數hello

string value = "world";
Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "my_script", string.Format("hello('{0}');", value.Replace("'", "\\'")), true);

RegisterClientScriptBlock會將適當的<script>標記附加到發送到瀏覽器的HTML輸出中,並將代碼注入其中。

第二個參數是腳本的“鍵”,它使您可以擁有多個語句,並檢查是否已基於鍵注冊了特定的語句。 最后一個參數告訴框架為您添加<script>標記。

您需要用適當的轉義序列替換任何單引號,以避免在包含單引號的字符串時破壞該字符串,因為這是用於將值傳遞給函數的“定界符”。

您可能會認為這是一種黑客行為,但始終可以將消息放在html元素中,例如:

<p id='message' style='display: none;'>Your Message</p>

然后在您的JavaScript中:

function hello()
{
    var m = document.getElementById('message').innerHTML;
    alert(m);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM