2012-10-01 33 views
0

我是按照here發現創建一個安全的登錄頁面的代碼。麻煩的是,它不能創建隱藏的輸入元素。的Javascript:UN-能夠創造出新的隱藏輸入元素

function formhash(form, password) { 
    // Create a new element input, this will be out hashed password field. 
    var p = document.createElement("input"); 
    // Add the new element to our form. 
    form.appendChild(p); 
    p.name = "p"; 
    p.type = "hidden" 
    p.value = hex_sha512(password.value); 
    // Make sure the plaintext password doesn't get sent. 
    password.value = ""; 
    // Finally submit the form. 
    form.submit(); 
} 

我已經通讀說它只適用於IE而不適用於壁虎。這是真的還是我錯過了什麼?

更新:

當我把的JavaScript進入登錄頁面的formhash功能工作。當它移動到外部文件時,問題再次出現。

@asprin注意。我放置php的原因是因爲代碼是基於php的實現

@Henrik會這樣做。由於

@RenePot是啊,它被稱爲process_login.php頁面上

您的建議@MarkGarcia感謝。請注意,這是說,該功能未聲明

@WernerVesterås不知道,但我認爲之後。

@Quentin感謝您的建議。將這樣做:D

+0

會發生什麼?控制檯中有任何錯誤? –

+0

更好地這個問題,因爲它似乎是純粹的JS相關 – asprin

+0

請把你的代碼放在像jsfiddle.net,使我們更容易幫助去除「PHP」標籤。 –

回答

1

可能,form根本沒有設置爲你認爲它是什麼,一個jsfiddle.net可能會幫助我們和你調試。我在http://jsfiddle.net/JPTyj/上設置了一個工作版本,將其隱藏起來以實際看到它的工作。 請注意,您不會在瀏覽器的「查看源代碼」中隱藏輸入字段,因爲它會動態添加到dom中!使用firebug或chrome開發工具來查看它。

此外,很可能您會希望使用庫來使您更容易開發獨立於平臺的代碼,而不是編寫裸露的JavaScript。

+0

是的,我改變它是更一般的。 –

+0

Hehehe ...你不知道我錯了。 (我已經刪除了我的評論。) –

+0

Thanks @Henrik:D – Iso

0

在IE8(至少),您需要使用setAttribute()追加前設置type屬性:

var p = document.createElement("input"); 
p.setAttribute("type", "hidden"); 
form.appendChild(p); 

http://jsfiddle.net/BePGD/經測試,在IE7,IE8,Chrome瀏覽器。