从服务器端调用JavaScript函数?

时间:2011-10-18 07:38:26

标签: c# javascript jquery asp.net

所以这看起来很有名,但差别不大。

JavaScript功能:

function ShowMessage(Message, Title, isAlarm) {
        $("#dtext").html(Message);
        $("span.ui-dialog-title").text(Title);
        $("#dialog").dialog({
            open: function(e) {
                var Dia = $(e.target);
                if (isAlarm == true) {
                    Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("background", "red");
                    Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("color", "White");
                }
                else {
                    Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("background", "LightSeaGreen");
                    Dia.parents(".ui-dialog:first").find(".ui-dialog-titlebar").css("color", "White");
                }
            },
            show: "blind",
            hide: "clip",
            modal: true,
            resizable: false,
            buttons: {
                "Close": function(e) {
                    $(this).dialog("close");
                    return true;
                }
            }
        });
    }

如您所见,此方法填充Jquery-Code。如果这只是java脚本,我们可以使用此代码来调用该函数,但在这种情况下,此方法不能正常工作。

C#调用JS方法:

 if (!Pointer.ClientScript.IsStartupScriptRegistered("message"))
        Pointer.Page.ClientScript.RegisterStartupScript
            (Pointer.Master.GetType(), "message", "ShowMessage('messageBox','" + Message + "',false);", true);

我不知道如何解决这个问题。 I Want just call this Js function from server-side?

  

修改1

感谢您的关注。有些人想要我更好地描述我的问题。为什么我不能? Cuz I don't know what's exactly problem

我可以说,我用FireBug测试这个程序并在JS函数的第一行设置断点,但是在运行时我将Js函数称为断点Hit几毫秒然后页面重新加载完成,没有任何反应。

  

我是JS和jQuery的新手。因此,请点击投票PLZ 尝试使用这些代码的示例程序并帮助我

再次感谢(特别是Stefan,PirateKitten,Widor)

  

编辑2

我将此Function(JQuery Message Function)替换为仅使用简单JS警报的 Old Function 。我必须说老版本的工作(即使我从服务器端用JS-Caller函数调用它来编写)。

在这种情况下,即使 I call new Function(JQ Function) with Js 在页面中如下:

<button type="button" onclick="ShowMessage('hi','title',false)">
  Display Message
</button>

虽然有效,但 when call that from server side, Function don't work

3 个答案:

答案 0 :(得分:2)

简单地说;你做不到。

JavaScript运行客户端,C#运行服务器端。

但是,您可以生成 JavaScript服务器端并将其输出到客户端。

请在此处查看我的回答:Call javascript from vb.net code behind

答案 1 :(得分:1)

在{-1}}注册的代码在页面末尾“呈现”。确切地说,在Page.ClientScript.RegisterStartupScript关闭标记之前的script标记中。但是,代码可能在完全生成DOM树之前运行。

由于您的form函数访问DOM树,因此您的问题可能与缺少DOM树元素有关。

如果我正确地解释了您的问题,页面上没有JS错误。这可能是jquery选择器行为的结果:

ShowMessage

这将使用id dtext 设置所有元素的HTML。由于可能没有ID为 dtext 的元素,$("#dtext").html(Message); 将返回一个空集合,并且不会执行任何操作。

要解决此问题,您可以尝试在jquery文档就绪事件中运行代码。如果页面已满载,jQuery将触发此事件:

$("#dtext")

<强> ServerCode:

$(document).ready(function() { ShowMessage('messageBox','" + Message + "', false); }

答案 2 :(得分:-1)

你可以像这样从服务器端调用js函数

Page.ClientScript.RegisterStartupScript(this.GetType(), "show", "ShowMessage()",true);

希望这会对你有所帮助