SCRIPT438:对象不支持属性或方法IE(SCRIPT438: Object doesn'

2019-07-17 11:23发布

我在我的应用程序的选项,用户可以取消他们的个人资料。 只有管​​理员可以重新激活它们。

我有一个类ActivateProfile两种方法

  • userExist(userName) ,检查是否存在使用该用户名的用户和他/她的个人资料被停用
  • activateAccountByUser(userName)即再次激活用户的配置文件

我呼吁输入型按钮的单击事件的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");
         }
      }});
   }
}

下面是激活型材类的代码

 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;
}

Answer 1:

几天以后,在互联网上搜索,我发现,当一个HTML元素的ID具有相同的ID在javascript函数局部变量,通常会出现此错误。 改变其中一人的名字后,我的代码是工作的罚款。



Answer 2:

这是在采用JavaScript的命名空间的Web应用程序的一个常见问题。 当在这种情况下,时间的问题99.9%是IE无力目前的命名空间中的绑定方法的关键字“this”。

举例来说,如果我有JS命名空间“的StackOverflow”与方法“isAwesome”。 通常情况下,如果你是“StackOverflow的”命名空间中,你可以调用“isAwesome”法的语法如下:

this.isAwesome();

Chrome浏览器,Firefox和Opera会很乐意接受这种语法。 即在另一方面,不会。 因此,使用JS命名空间时,最安全的赌注是要始终与实际的命名空间前缀。 一拉:

StackOverflow.isAwesome();


Answer 3:

我已经加入VAR在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();   


Answer 4:

我的问题是具有type="application/javascript"<script> jQuery的标签。 IE8不喜欢这个! 如果你的网页是HTML5,你甚至都不需要声明的类型,与否则转到type="text/javascript"代替。



Answer 5:

在我来说,我有这样的代码:

function.call(context, arg);

我在IE下得到错误信息

类型错误:对象不支持属性或方法“错误”

在“功能”的身体我有“console.error”,它原来当您的控制台关闭该控制台的对象是不确定的。 我已经通过,如果控制台和console.error定义检查固定这



Answer 6:

我忘了使用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');


Answer 7:

贯彻"use strict"的所有脚本标签,从而找到不一致和修复潜在的无范围的变数!



Answer 8:

我们可以通过增加在Object.Assign填充工具的文件被导入并引发错误来解决这个问题。 我们将使它的最高进口,这样它会提供给其他代码在堆栈中被调用。

import "mdn-polyfills/Object.assign";

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill



Answer 9:

这个问题可能是由于不正确的jQuery的版本出现。 像1.4等在那里做的方法是不支持



Answer 10:

我有以下

document.getElementById("search-button") != null

它工作得很好所有的浏览器IE8除外。 (我没有检查IE6或IE7)

我把它改成

document.getElementById("searchBtn") != null

和更新领域的id属性在我的HTML,它现在在IE8



文章来源: SCRIPT438: Object doesn't support property or method IE