Javascript:无法创建新的隐藏输入元素
我按照中的代码创建了一个安全的登录页面。问题是,它无法创建隐藏的输入元素Javascript:无法创建新的隐藏输入元素,javascript,security,Javascript,Security,我按照中的代码创建了一个安全的登录页面。问题是,它无法创建隐藏的输入元素 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.appendCh
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有效,对gecko无效。这是真的还是我错过了什么
更新:
当我将javascript放入登录页面时,formhash函数起作用。当移动到外部文件时,问题再次出现
@阿斯普林指出。我之所以使用php,是因为代码基于php实现
@亨里克会这么做的。谢谢
@RenePot是的,它是在process_login.php页面上调用的
@谢谢你的建议。注意,它说函数不是declare
@WernerVesterå不确定,但我想之后
@昆汀:谢谢你的建议。将这样做:D很可能,
表单
没有设置为您认为的值,jsfiddle.net可能会帮助我们和您进行调试。我在Comment out hidden设置了一个工作版本,以实际查看它的工作情况。请注意,您不会在浏览器中的“查看源”中删除隐藏的输入字段,因为它是动态添加到dom中的!使用firebug或chrome开发工具查看它
此外,您很可能希望使用库来简化开发平台无关代码的过程,而不是编写简单的javascript。在IE8(至少)中,您需要先设置类型
属性,然后再使用setAttribute()
:
在IE7、IE8和Chrome中测试。会发生什么?控制台中有错误吗?最好从这个问题中删除“php”标记,因为它似乎纯粹与js有关。请将您的代码放在类似jsfiddle.net的东西上,以便我们更容易提供帮助。如果您使用的是firebug,然后看看在脚本执行时和执行后html代码会发生什么情况在加载DOM之前还是之后调用此函数?是的,我将其更改为更通用。嘿嘿。。。你不知道我错了。(我已经删除了我的评论。)
var p = document.createElement("input");
p.setAttribute("type", "hidden");
form.appendChild(p);