63

私のアプリケーションには、ユーザーが自分のプロファイルを非アクティブ化できるオプションがあります。管理者のみがそれらを再度アクティブ化できます。

ActivateProfile私は2つのメソッドを持つクラスを持っています

  • userExist(userName)その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");
         }
      }});
   }
}

これがActivateプロファイルクラスのコードです

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

10 に答える 10

90

インターネットを検索して数日後、このエラーは通常、html要素IDがjavascript関数の変数と同じIDを持っている場合に発生することがわかりました。それらの1つの名前を変更した後、私のコードは正常に機能していました。

于 2012-12-22T13:07:18.873 に答える
5

対応する JavaScript のすべての変数に var を追加しました。これで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();   
于 2013-03-04T12:33:07.947 に答える
1

私の場合、次のようなコードがありました。

function.call(context, arg);

IE でエラー メッセージが表示されました

TypeError: オブジェクトはプロパティまたはメソッド 'エラー' をサポートしていません

「関数」の本文に「console.error」があり、コンソールを閉じるとコンソールオブジェクトが未定義になります。console と console.error が定義されているかどうかを確認して、これを修正しました

于 2016-01-27T12:59:06.580 に答える
0

varitem 変数で使用するのを忘れていました

間違ったコード:

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');
于 2015-05-15T11:24:19.207 に答える
0

この問題は、インポートするファイルに Object.Assign ポリフィルを追加してエラーをスローすることで解決できました。スタック内で呼び出される他のコードが利用できるように、これを最上位のインポートにします。

import "mdn-polyfills/Object.assign";

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

于 2018-11-26T23:18:15.247 に答える
-1

私は以下を持っていました

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

ie8 を除くすべてのブラウザで問題なく動作しました。(ie6またはie7をチェックしませんでした)

に変更しました

document.getElementById("searchBtn") != null

私のhtmlのフィールドのid属性を更新し、ie8で動作するようになりました

于 2013-12-20T19:01:23.707 に答える
-1

この問題は、不適切な jquery バージョンが原因で発生する可能性があります。done メソッドがサポートされていない 1.4 など

于 2013-11-18T11:11:06.263 に答える