SCRIPT438:对象不支持属性或方法IE
我在我的应用程序中有一个选项,用户可以停用他们的configuration文件。 只有pipe理员可以再次激活它们。
我有一个类ActivateProfile
有两个方法
-
userExist(userName)
,用于检查具有该用户名的用户是否存在,并且他/她的configuration文件被停用 - 和
activateAccountByUser(userName)
再次激活用户的configuration文件
我在inputtypesbutton的click事件上调用JavaScript函数。 此代码在Chrome和Mozilla上正常工作,但在Internet Explorer上出现此错误:
SCRIPT438:对象不支持属性或方法userExist
function activateProf() { var userName=document.getElementById("userName").value; if (userName == "") { alert("Полето е задолжително"); } else { alert(userName + "1"); ActivateProfile.userExist(userName, { callback:function(exist) { if (userName) { ActivateProfile.activateAccountByUser(userName); alert("User is activated"); } else { alert("User does not exist"); } }}); } }
这里是激活configuration文件类的代码
public void activateAccountByUser(String userName) { try { Connection c = DBComm.getInstance().getConnection(); Statement s = c.createStatement(); ResultSet set = s.executeQuery("select * from accounts where userName = '" + userName + "' and isauthorized='2'"); if (set.next()) { Statement st = c.createStatement(); st.executeUpdate("update accounts set isauthorized='1' where userName='" + userName + "' and isauthorized='2'"); } s.close(); c.close(); } catch (Exception ex) { java.util.logging.Logger.getLogger(ActivateProfile.class.getName()).log(Level.SEVERE, null, ex); } } public boolean userExist(String userName) throws SQLException { //true exist //false does not exist boolean existEmbg = false; try { Connection c = DBComm.getInstance().getConnection(); Statement s = c.createStatement(); ResultSet set = s.executeQuery("select * from accounts where userName = '" + userName + "' and isauthorized='2'"); if (set.next()) { existEmbg = true; } else { existEmbg = false; } s.close(); c.close(); } catch (Exception ex) { java.util.logging.Logger.getLogger(ActivateProfile.class.getName()).log(Level.SEVERE, null, ex); } return existEmbg; }
在search互联网后的一些日子里,我发现这个错误通常发生在html元素id与javascript函数中的某个variables具有相同的id时。 改变其中一个人的名字后,我的代码工作正常。
这是使用JavaScript命名空间的Web应用程序中的一个常见问题。 在这种情况下,99.9%的问题是IE无法将当前命名空间内的方法绑定到“this”关键字。
例如,如果我有方法“isAwesome”的JS命名空间“StackOverflow”。 通常情况下,如果您在“StackOverflow”命名空间内,则可以使用以下语法调用“isAwesome”方法:
this.isAwesome();
Chrome,Firefox和Opera会高兴地接受这个语法。 IE另一方面,不会。 因此,使用JS命名空间时最安全的select是始终以实际名称空间作为前缀。 阿拉:
StackOverflow.isAwesome();
我已经添加了var的所有variables在corrosponding的JavaScript。 这解决了IE中的问题。
以前的代码
billableStatus = 1 ; var classStr = $(this).attr("id").split("_"); date = currentWeekDates[classStr[2]]; // Required activityNameId = "initialRows_" + classStr[1] + "_projectActivityName"; activityId = $("#"+activityNameId).val(); var projectNameId = "initialRows_" + classStr[1] + "_projectName" ; projectName = $("#"+projectNameId).val(); var timeshitEntryId = "initialRows_"+classStr[1]+"_"+classStr[2]; timeshitEntry = $("#"+timeshitEntryId).val();
新代码
var billableStatus = 1 ; var classStr = $(this).attr("id").split("_"); var date = currentWeekDates[classStr[2]]; // Required var activityNameId = "initialRows_" + classStr[1] + "_projectActivityName"; var activityId = $("#"+activityNameId).val(); var projectNameId = "initialRows_" + classStr[1] + "_projectName" ; var projectName = $("#"+projectNameId).val(); var timeshitEntryId = "initialRows_"+classStr[1]+"_"+classStr[2]; var timeshitEntry = $("#"+timeshitEntryId).val();
我的问题是在jQuery的<script>
标签上type="application/javascript"
。 IE8不喜欢这个! 如果你的网页是HTML5,你甚至不需要声明types,否则用type="text/javascript"
来代替。
在我的情况下,我有这样的代码:
function.call(context, arg);
我在IE下得到了错误信息
TypeError:对象不支持属性或方法“错误”
在“函数”的主体中,我有“console.error”,并且当你的控制台closures时,控制台对象是不确定的。 我已经通过检查console和console.error是否定义来解决这个问题
我忘了在我的itemvariables上使用var
不正确的代码:
var itemCreateInfo = new SP.ListItemCreationInformation(); item = list.addItem(itemCreateInfo); item.set_item('Title', 'Haytham - Oil Eng');
正确的代码:
var itemCreateInfo = new SP.ListItemCreationInformation(); var item = list.addItem(itemCreateInfo); item.set_item('Title', 'Haytham - Oil Eng');
这个问题可能是由于不正确的jQuery版本发生的。 像1.4等不完整的方法不支持
我有以下
document.getElementById("search-button") != null
在ie8以外的所有浏览器中工作正常。 (我没有检查ie6或ie7)
我改变了
document.getElementById("searchBtn") != null
并更新我的HTML字段上的id属性,现在在ie8中工作