2013-05-07 103 views
1

我試圖從後面的代碼中的一個按鈕單擊調用它自己的文件中的JavaScript方法。從後面的代碼調用Javascript函數ASP.NET

aspx文件

protected void Next_Click(object sender, EventArgs e) 
{ 
    if (hidden.Value == "") 
    { 
     Response.Write(@"<script language='javascript'>drawImage();</script>"); 
    } 
} 

JS文件

function drawImage() { 
    context.drawImage(video, 0, 0, 320, 240); 
    var imgBase = canvas.toDataURL('image/jpeg'); 
    document.getElementById("hidden").value = imgBase; 
} 

的問題是,這不會調用draw圖像的方法,我懷疑這是造成js文件是它自己的文件,但我不當然。

任何幫助,你可以給予將不勝感激。

回答

0

我認爲你已經在你的頁面中包含腳本文件。

如果需要回發,您需要ClientScriptManager.RegisterStartupScript Method (Type, String, String, Boolean) ..

protected void Next_Click(object sender, EventArgs e) 
{ 
    if (hidden.Value == "") 
    { 
     ClientScriptManager cs = Page.ClientScript; 
     cs.RegisterStartupScript(this.GetType(), 'startupScript', 'drawImage();', true); 
    } 
} 

More Info from SO


你可以調用從按鈕本身的功能,無需回發。

<asp:Button runat="server" ID='next' OnClientClick="return drawImage();" /> 

和在腳本

function drawImage() { 
    if(document.getElementById("hidden").value != undefined || document.getElementById("hidden").value != "") 
    { 
     context.drawImage(video, 0, 0, 320, 240); 
     var imgBase = canvas.toDataURL('image/jpeg'); 
     document.getElementById("hidden").value = imgBase; 
     return false; 
    } 
} 
0

1)。如果函數存儲在外部文件(例如MyScript.js),那麼你應該將其包含在網頁的<head>部分和onclick事件添加到該按鈕,如:

ButtonName.Attributes.Add("onclick", {YourFunction}); 

Page_Load事件。

2)另一種方法是將整個javascript函數分配給一個字符串變量,然後將其傳遞給{YourFunction},而不是前綴爲javascript:。在這種情況下,你甚至不需要外部文件。

希望它會有所幫助。 我最好的,亞歷克斯

相關問題