锚定中的Javascript不与IE一起工作
我试图通过锚标记和javascript重定向到我的ServletController 现在它在Google chrome中工作,而不是在IE中。到目前为止,我在网络上浏览了两天,发现IE不能很好地与动态元素setAttribute一起工作,因此我不得不切换到使用“实际”属性并为其赋值 假设锚创建一个动态表单并提交表单,然后向我的Servlet创建一个新请求,但由于某种原因,当我在javascript中单击锚时,它什么也不做。然而,当我点击chrome中的锚时,它会正确地将我重定向到下一页,而不会出现任何问题锚定中的Javascript不与IE一起工作,javascript,html,anchor,Javascript,Html,Anchor,我试图通过锚标记和javascript重定向到我的ServletController 现在它在Google chrome中工作,而不是在IE中。到目前为止,我在网络上浏览了两天,发现IE不能很好地与动态元素setAttribute一起工作,因此我不得不切换到使用“实际”属性并为其赋值 假设锚创建一个动态表单并提交表单,然后向我的Servlet创建一个新请求,但由于某种原因,当我在javascript中单击锚时,它什么也不做。然而,当我点击chrome中的锚时,它会正确地将我重定向到下一页,而不会
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Account</title>
<meta name="description" content="eTeam Bank">
<meta name="author" content="Abraham Cabrera">
<link rel="stylesheet" type="text/css" href="css/mystyles.css">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript">
function anchorRedirect(username, user_id, operation) {
"use strict";
var form = document.createElement("form");
form.name="form";
form.id="form";
form.method = "post";
form.action = "ServletController";
var hiddenField1 = document.createElement("input");
hiddenField1.type = "hidden";
hiddenField1.name = "username";
hiddenField1.value = username;
form.appendChild(hiddenField1);
var hiddenField2 = document.createElement("input");
hiddenField2.type = "hidden";
hiddenField2.name = "user_id";
hiddenField2.value = user_id;
form.appendChild(hiddenField2);
var hiddenField3 = document.createElement("input");
hiddenField3.type = "hidden";
hiddenField3.name = "operation";
hiddenField3.value = operation;
form.appendChild(hiddenField3);
form.submit();
}
</script>
</head>
<body>
<header>
<div id="title">eTeam Bank</div>
</header>
<div id="container">
<div class="userTitle" >
<div class="user">
Welcome: user
</div>
<div class="userTime">
Thu Jan 31 09:24:16 EST 2013
</div>
</div>
<div class="accountBox" >
<div class="accountSpace"></div>
<div id="accountAnchor">
<a href="javascript:anchorRedirect('user', '2', 'loadPersonalInfo');">Personal Info</a>
</div>
<div id="accountAnchor">
<a href="javascript: anchorRedirect('user', '2', 'loadAccountInfo')">Account Info</a>
</div>
<div id="accountAnchor">
<a href="javascript: anchorRedirect('user', '2', 'loadAccountSum')">Account Summary</a>
</div>
</div>
</div>
<footer>
<div id="footerContent">Abraham Cabrera © 2013</div>
</footer>
我的帐户
函数anchorRedirect(用户名、用户id、操作){
“严格使用”;
var form=document.createElement(“表单”);
form.name=“form”;
form.id=“form”;
form.method=“post”;
form.action=“ServletController”;
var hiddenField1=document.createElement(“输入”);
hiddenField1.type=“隐藏”;
hiddenField1.name=“用户名”;
hiddenField1.value=用户名;
表.附录子项(hiddenField1);
var hiddenField2=document.createElement(“输入”);
hiddenField2.type=“隐藏”;
hiddenField2.name=“用户id”;
hiddenField2.value=用户id;
表格.附件(hiddenField2);
var hiddenField3=document.createElement(“输入”);
hiddenField3.type=“隐藏”;
hiddenField3.name=“操作”;
hiddenField3.value=操作;
表格.附件(hiddenField3);
表单提交();
}
伊泰姆银行
欢迎:用户
2013年1月31日星期四09:24:16美国东部时间
亚伯拉罕·卡布雷拉&复印件;2013
其他详细信息:1.这不适用于任何类型的生产企业或公司,仅用于个人学习。
2.我确实尝试过在不使用java脚本函数的情况下通过url路径直接传递变量,但这不符合我的要求,因为我需要向我的ServletController发出新请求,以便通过模型类或任何操作获取用户帐户信息,并将其转发回视图 我建议在HTML中创建表单(而不是通过javascript),表单中已经包含了所有需要的字段。然后,不用创建和设置元素,只需设置隐藏字段的值并提交表单,就可以从根本上简化JS。差不多
<form name="myform" id="myform" method="post" action="ServletController">
<input type="hidden" name="username" value="">
<input type="hidden" name="user_id" value="">
<input type="hidden" name="operation" value="">
</form>
我注意到,如果我使用您的代码并添加一个id='form_div1'的div,并在提交之前将新创建的表单附加到该div中,它将从FireFox和IE开始工作
var my_div = document.getElementById("form_div1");
my_div.appendChild(form);
form.submit();
如果你能更具体地说明什么是不起作用的,这会有所帮助。您可以发布一个重现您的问题的JSFIDLE吗?你犯了什么错误?你是在HTML页面的
元素之前定义函数的吗?编辑它以包含我的错误和完整代码。相关:至于具体的功能要求,这段代码太糟糕了。像sohref=“servlet?foo=bar”
这样的普通链接,而不需要所有JS乱七八糟的东西,有什么错呢?如果你读了我的问题,也许第二次你会看到,我确实使用了setAttribute函数,但它没有解决我的问题。那么,为什么IE不能正确处理动态表单,因为你的解决方案起作用了,但你看不出为什么我的解决方案不应该这样做?嗯。。。正如查理指出的,贝娄。。。您正在创建的表单似乎没有正确地添加到DOM中(它是文档的一部分,但不在树中)。所以很可能。。。我拒绝提交。
var my_div = document.getElementById("form_div1");
my_div.appendChild(form);
form.submit();