'JavaScript'에 해당되는 글 4건
- 2009/11/20 메시지: 개체가 필요합니다. 줄 : 53 (7)
- 2008/04/23 execCommand 관련 링크
- 2008/04/17 prototype으로 정의한 method에 setTimeout 설정하기.
- 2008/01/25 Javascript Cross Browsing (2)
2009/11/20 04:45
IE에서 flash가 포함된 페이지를 빠져나가려고 하면 가끔 이런 JScript 오류 메시지가 뜨곤합니다.
만약 다른 웹페이지에서 저런 걸 봤다면 "으이그~" 라고 했을텐데.. 제가 만든 웹페이지가 저 모냥이라 넘어갈 수가 없더군요.
그래서 찾아봤는데 한글로는 답이 없습니다.
한글로 된 문서들에는 네이버 로그인할 때 저렇다는 질문과 완전 엉뚱한 대답뿐..
그래서 짧은 영어로 주섬주섬... 찾았습니다.
Javascript error with embed
해결책은 embed만 사용하면 안되고, embed를 object로 감싼 후 object에 id속성을 주어야 한다는 것입니다.
혹시 저처럼 이것 때문에 패닉에 빠질뻔한 분들은 도움이 되시길...
덧> 실제로 에러가 나는 부분인데.. 이게 뭔지 아시는 분 있나요? 있으시면 가르침 좀 주십쇼 :)
메시지: 개체가 필요합니다.
줄: 53
문자: 3
코드: 0
줄: 53
문자: 3
코드: 0
만약 다른 웹페이지에서 저런 걸 봤다면 "으이그~" 라고 했을텐데.. 제가 만든 웹페이지가 저 모냥이라 넘어갈 수가 없더군요.
그래서 찾아봤는데 한글로는 답이 없습니다.
한글로 된 문서들에는 네이버 로그인할 때 저렇다는 질문과 완전 엉뚱한 대답뿐..
그래서 짧은 영어로 주섬주섬... 찾았습니다.
Javascript error with embed
해결책은 embed만 사용하면 안되고, embed를 object로 감싼 후 object에 id속성을 주어야 한다는 것입니다.
혹시 저처럼 이것 때문에 패닉에 빠질뻔한 분들은 도움이 되시길...
덧> 실제로 에러가 나는 부분인데.. 이게 뭔지 아시는 분 있나요? 있으시면 가르침 좀 주십쇼 :)
function __flash__arrayToXML(obj) {
var s = "<array>";
for (var i=0; i<obj.length; i++) {
s += "<property id=\"" + i + "\">" + __flash__toXML(obj[i]) + "</property>";
}
return s+"</array>";
}
function __flash__argumentsToXML(obj,index) {
var s = "<arguments>";
for (var i=index; i<obj.length; i++) {
s += __flash__toXML(obj[i]);
}
return s+"</arguments>";
}
function __flash__objectToXML(obj) {
var s = "<object>";
for (var prop in obj) {
s += "<property id=\"" + prop + "\">" + __flash__toXML(obj[prop]) + "</property>";
}
return s+"</object>";
}
function __flash__escapeXML(s) {
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
function __flash__toXML(value) {
var type = typeof(value);
if (type == "string") {
return "<string>" + __flash__escapeXML(value) + "</string>";
} else if (type == "undefined") {
return "<undefined/>";
} else if (type == "number") {
return "<number>" + value + "</number>";
} else if (value == null) {
return "<null/>";
} else if (type == "boolean") {
return value ? "<true/>" : "<false/>";
} else if (value instanceof Date) {
return "<date>" + value.getTime() + "</date>";
} else if (value instanceof Array) {
return __flash__arrayToXML(value);
} else if (type == "object") {
return __flash__objectToXML(value);
} else {
return "<null/>"; //???
}
}
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
}
}
function __flash__removeCallback(instance, name) {
instance[name] = null; // 여기
}
var s = "<array>";
for (var i=0; i<obj.length; i++) {
s += "<property id=\"" + i + "\">" + __flash__toXML(obj[i]) + "</property>";
}
return s+"</array>";
}
function __flash__argumentsToXML(obj,index) {
var s = "<arguments>";
for (var i=index; i<obj.length; i++) {
s += __flash__toXML(obj[i]);
}
return s+"</arguments>";
}
function __flash__objectToXML(obj) {
var s = "<object>";
for (var prop in obj) {
s += "<property id=\"" + prop + "\">" + __flash__toXML(obj[prop]) + "</property>";
}
return s+"</object>";
}
function __flash__escapeXML(s) {
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
function __flash__toXML(value) {
var type = typeof(value);
if (type == "string") {
return "<string>" + __flash__escapeXML(value) + "</string>";
} else if (type == "undefined") {
return "<undefined/>";
} else if (type == "number") {
return "<number>" + value + "</number>";
} else if (value == null) {
return "<null/>";
} else if (type == "boolean") {
return value ? "<true/>" : "<false/>";
} else if (value instanceof Date) {
return "<date>" + value.getTime() + "</date>";
} else if (value instanceof Array) {
return __flash__arrayToXML(value);
} else if (type == "object") {
return __flash__objectToXML(value);
} else {
return "<null/>"; //???
}
}
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
}
}
function __flash__removeCallback(instance, name) {
instance[name] = null; // 여기
}
댓글을 달아 주세요
-
hana☆
-
2008/04/23 21:41
execCommand method 설명 링크
각 브라우저별 execCommand 비교 링크
execCommand 명령 설명 링크
Javascript로 할 수 있는 일은 정말 놀라울 뿐...
각 브라우저별 execCommand 비교 링크
execCommand 명령 설명 링크
Javascript로 할 수 있는 일은 정말 놀라울 뿐...
댓글을 달아 주세요
2008/04/17 17:20
javascript 삼매경에 빠져있다.
그러나 setTimeout은 동기적으로 동작해서 20ms뒤에 submitStep2() 를 수행하려 할 때쯤엔 이미 submitForm method 의 영역을 벗어나서 submitStep2() 를 processForm이 아닌 다른 곳에서 찾으려 할 것이다.
그렇다면 submitStep2()를 수행하려면 어떻게 해야할까?
답은 using setTimeout when using prototype 에서 찾을 수 있었다.
마지막 submitForm 을
과 같이 바꾸어 주면 된다.
그러면 self는 여전히 processForm을 가리킬 것이고 submitStep2()는 정상적으로 수행된다.
processForm=function(inservleturl) {현재 이 소스코드에서 submitForm 은 20ms 뒤에 submitStep2() 를 수행하려 할 것이다.
this.inservleturl = inservleturl;
this.submitForm();
}
processForm.prototype.submitForm2=function() {
}
processForm.prototype.submitForm=function() {
setTimeout("submitStep2()", 20);
}
그러나 setTimeout은 동기적으로 동작해서 20ms뒤에 submitStep2() 를 수행하려 할 때쯤엔 이미 submitForm method 의 영역을 벗어나서 submitStep2() 를 processForm이 아닌 다른 곳에서 찾으려 할 것이다.
그렇다면 submitStep2()를 수행하려면 어떻게 해야할까?
답은 using setTimeout when using prototype 에서 찾을 수 있었다.
마지막 submitForm 을
processForm.prototype.submitForm=function() {
var self = this ;
setTimeout(function() { self.submitStep2() }, 20);
}
과 같이 바꾸어 주면 된다.
그러면 self는 여전히 processForm을 가리킬 것이고 submitStep2()는 정상적으로 수행된다.
댓글을 달아 주세요
2008/01/25 01:40
Javascript를 쓰다보면 정말 IE가 왜 이럴까 하는 생각을 많이 하게된다.
event, event.target 가 통하지 않기에 설마설마 했는데.... 결국..
IE에서는
event 대신 window.event 를
target 대신 srcElement 를 사용해야했다. -_
참고문서
IE에서
setAttribute를 사용해서 class를 입력할때는 obj.setAttribute ("className", ...)
즉 class 가 아닌 className을 써야한다.
모든 브라우저에 사용되는 방법은 obj.className 이다.
자바 스크립트는 생각보다 귀찮다.
event, event.target 가 통하지 않기에 설마설마 했는데.... 결국..
IE에서는
event 대신 window.event 를
target 대신 srcElement 를 사용해야했다. -_
참고문서
IE에서
setAttribute를 사용해서 class를 입력할때는 obj.setAttribute ("className", ...)
즉 class 가 아닌 className을 써야한다.
모든 브라우저에 사용되는 방법은 obj.className 이다.
자바 스크립트는 생각보다 귀찮다.
