2013-05-03 63 views
0

我想調用已經在服務器端的ASP HiddenValue中定義的javascript函數(.ie在.cs文件中)。如何從ASP隱藏值調用JavaScript函數?

我曾經在的.cs側限定如下面

在ASPX:

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

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功能,如日曆功能。

+2

反正你不能隱藏javascript。它執行客戶端,因此你需要它的客戶端... – 2013-05-03 13:37:23

+0

謝謝,但我從隱藏價值的代碼。那麼爲什麼我不打電話使用該代碼?但我們可以調用我在上面的代碼中顯示的justcall()函數。 – Balu 2013-05-03 13:41:42

+0

從我看到的地方看,沒有必要調試不應該寫在第一位的代碼。只需把你的JavaScript放在它所屬的地方,它肯定不在隱藏的領域...... – 2013-05-03 13:44:31

回答

2

您無法在Javascript代碼中使用HiddenField中的值,因爲這些值實際上並未呈現在發送到客戶端瀏覽器的HTML中。從技術上講,它們堅持在客戶端之間來回發送的ViewState,但這不是Javascript可以利用的東西。

Javascript代碼在客戶端機器上執行,這意味着您需要將所有代碼(以及運行該代碼所需的值)發送到客戶端。隱藏的值,最簡單的辦法是把它放在一個隱藏的HTML元素像這樣:

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

但你已經知道,這是由用戶容易看到,只查看該頁面的源代碼。你可以希望得到的最多的是混淆你的Javascript代碼,這使得人們在基本上不可讀的同時仍然可以正常工作。這不是萬無一失的,並且可能會被任何人用最小的努力扭轉。在很多情況下,混淆還可以提供壓縮代碼的副作用,使其更小,並減少頁面加載時間。

查看this question,瞭解如何完成此操作的一些很好的示例。

相關問題