IEでF12を押さないとjavascriptが…
javascript初心者です。
サイトのログインページに、
IDとpasswordを保存する機能をを作りたいと考えています。
プログラムからjavaccriptを呼び出しているのですが、
IEからそのjavascriptが読み込まれなくなってしまいました。
(Chrome,FireFox,Operaでは正しく動作しています。)
F12を押してIEの開発者ツールを立ち上げると、正しく動作するようになります。
なぜ、F12を押さないと呼ばれないのかが、
さっぱりわからず、教えていただけないでしょうか。
htmlソースにも記述されています。
呼び出し元は、tclです。
<script language="JavaScript">
var rwAuthInfo = {
conf : {
kwordId : 'auth_id',
kwordPass : 'auth_pass',
savePeriod : 120,
idElemKey : 'authId',
passElemKey : 'authPass',
chkElemKey : 'authSave'
},
CookieWrite : function(kword, kdata, kday) {
if (!navigator.cookieEnabled) {
return;
}
var sday = new Date();
sday.setTime(sday.getTime() + (kday * 1000 * 60 * 60 * 24));
var s2day = sday.toGMTString();
document.cookie = kword + "=" + escape(encodeURIComponent(kdata)) + ";expires=" + s2day + ";path=/";
},
CookieRead : function(kword) {
if (typeof(kword) == "undefined") {
return "";
}
kword = kword + "=";
var kdata = "";
var scookie = document.cookie + ";";
var start = scookie.indexOf(kword);
if (start != -1) {
end = scookie.indexOf(";", start);
kdata = decodeURIComponent(unescape(scookie.substring(start + kword.length, end)));
}
return kdata;
},
getAuthInfo : function() {
console.log("get auth info");
var myPass = decodeURIComponent(unescape(rwAuthInfo.CookieRead(rwAuthInfo.conf.kwordPass)));
var obj1 = document.getElementsByTagName('input');
for(i = 0; i < obj1.length; i++){
if ( obj1[i].id == rwAuthInfo.conf.passElemKey && myPass != "" ) {
obj1[i].value = myPass;
}
}
var myId = rwAuthInfo.CookieRead(rwAuthInfo.conf.kwordId);
var obj2 = document.getElementsByTagName('input');
for(i = 0; i < obj2.length; i++){
if ( obj2[i].id == rwAuthInfo.conf.idElemKey && myId != "" ) {
obj2[i].value = myId;
}
}
console.log("From cookie - id: " + myId + ", password: " + myPass);
},
saveAuthInfo : function() {
console.log("save authentication info");
var objChk = document.getElementById(rwAuthInfo.conf.chkElemKey);
if ( objChk.type == "checkbox" && objChk.checked ) {
var obj1 = document.getElementById(rwAuthInfo.conf.passElemKey);
if ( obj1.value != null && obj1.value != '' ) {
var myPass = escape(encodeURIComponent(obj1.value));
console.log("password: " + obj1.value + ", encoded: " + myPass);
rwAuthInfo.CookieWrite(rwAuthInfo.conf.kwordPass, myPass, rwAuthInfo.conf.savePeriod);
}
var obj2 = document.getElementById(rwAuthInfo.conf.idElemKey);
if ( obj2.value != null && obj2.value != '' ) {
var myId = escape(encodeURIComponent(obj2.value));
rwAuthInfo.CookieWrite(rwAuthInfo.conf.kwordId, myId, rwAuthInfo.conf.savePeriod);
}
}
},
addSubmitEvent : function() {
for ( i=0; i<document.forms.length; i++ ) {
var frm = document.forms[i];
try {
frm.addEventListener('submit', rwAuthInfo.saveAuthInfo, false);
} catch (e) {
frm.attachEvent('onsubmit', rwAuthInfo.saveAuthInfo);
}
}
},
addLoadEvent : function() {
try {
if (window.addEventListener) {
window.addEventListener('load', rwAuthInfo.getAuthInfo, false);
window.addEventListener('load', rwAuthInfo.addSubmitEvent, false);
} else if (window.attachEvent) {
var isMSIE = /*@cc_on!@*/0;
if (isMSIE) {
window.attachEvent('onload', rwAuthInfo.getAuthInfo);
window.attachEvent('onload', rwAuthInfo.addSubmitEvent);
window.attachEvent('load', rwAuthInfo.getAuthInfo);
window.attachEvent('load', rwAuthInfo.addSubmitEvent);
} else {
window.attachEvent('onload', rwAuthInfo.getAuthInfo);
window.attachEvent('onload', rwAuthInfo.addSubmitEvent);
}
}
} catch (e) {
console.error("got error in addLoadEvent: " + e);
window.attachEvent('onload', rwAuthInfo.getAuthInfo);
window.attachEvent('onload', rwAuthInfo.addSubmitEvent);
}
}
}
rwAuthInfo.addLoadEvent();
</script>
補足
エラーは”識別子がありません”と表示されています。 search_msg_dataの中身はMySqlで検索をした結果が返されています。 具体的には {"results":{"1":{"id":"1","name":"abc"},"2":{"id":"2","name":"cde"}}} というように入っています。idとnameはデータベースの列名です。IEでエラーの原因になるのはどのあたりでしょうか。 最初に載せたコードを実行したあとにはevalの結果をいれたget_jsonを var hash = get_json["results"]; でハッシュ化しています。 ChromeやFirefoxでは正常に動作します。