0

我想调用已经HiddenValue在服务器端的 ASP 中定义的 javascript 函数(.ie 在 .cs 文件中)。

我已经定义如下

在 .cs 方面:

    protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Attributes.Add("onclick", "javascript:return CallFun();");
        HF2.Value = " function() { alert('yes its working.... Woooww')};";
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
       Response.Write("Yea its working woooooowww...");
    }

在 aspx 中:

    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    <asp:HiddenField ID="HF2" runat="server" />

在js端:

function CallFun() {
    var hf2val = document.getElementById('HF2');
    //var hf2val = document.getElementById('HF2').value;        
    hf2val();
    //window[hf2val]();        
    return false;
}

我尝试了很多次并在谷歌上搜索过,但我没有得到正确的答案。但如果我像下面这样写它会起作用

在.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Attributes.Add("onclick", "javascript:return yes();");
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("Yea its working woooooowww...");
    }

在js中:

function yes() {

    var just = function() { alert('yes its working.... Woooww')};
    just();
    return false;
}

在 aspx 中:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

但我不想像上面那样显示。我的目标是在 View 源代码 Firebug 中隐藏 javascript 功能,例如日历功能。

4

1 回答 1

2

您将无法使用HiddenFieldJavascript 代码中的值,因为这些值实际上并未在发送到客户端浏览器的 HTML 中呈现。从技术上讲,它们保留在ViewState客户端之间来回发送的内容中,但这并不是 Javascript 可以使用的东西。

Javascript 代码在客户端机器上执行,这意味着您需要将所有代码(以及运行该代码所需的值)发送到客户端。隐藏值的最简单方法是将其放入隐藏的 HTML 元素中,如下所示:

<span id="myHiddenValue" style='display: none'>MyValue</span>

但正如您已经知道的那样,用户只需查看页面源即可轻松看到这一点。您最多可以期望的是混淆您的 Javascript 代码,这使得它对人类来说基本上是不可读的,同时仍然可以正常工作。这不是万无一失的,任何人都可以用最少的努力来扭转。在许多情况下,混淆还会提供压缩代码的附带好处,使其更小并减少页面加载时间。

看看这个问题,看看你如何做到这一点的一些很好的例子。

于 2013-05-03T13:54:32.377 回答