1

我试图在单击按钮时从代码后面的代码中调用其自己的文件中的 javascript 方法。

.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;
}

问题是这不会调用绘制图像方法,我怀疑这是因为 js 文件是它自己的文件,但我不确定。

您可以提供的任何帮助将不胜感激。

4

3 回答 3

1

http://msdn.microsoft.com/de-de/library/z9h4dk8y.aspx

尝试这个

string jquery = "drawImage();"
 ClientScript.RegisterStartupScript(typeof(Page), "a key", 
     "<script type=\"text/javascript\">"+ jquery +"</script>"
               );
于 2014-05-14T13:15:41.970 回答
0

1)。如果函数存储在外部文件中(例如MyScript.js),那么您应该将其包含在<head>网页部分中onclick并向按钮添加事件,例如:

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

Page_Load事件中。

2)另一种方法是将整个javascript函数分配给一个字符串变量,然后传递它而不是 {YourFunction} 前缀javascript:。在这种情况下,您甚至不需要外部文件。

希望它会有所帮助。我最好的,亚历克斯

于 2013-05-07T04:17:08.423 回答
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);
    }
}

来自 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;
    }
}
于 2013-05-07T04:12:02.993 回答