내 응용 프로그램에서 클라이언트 쪽에서 javascript를 사용하고 있는데, id, class 및 tagname을 기반으로 요소를 가져와야합니다. id
을 사용하여 요소를 가져 오는 데 다음 코드를 사용하고 있습니다.getElementById가 오페라에서 작동하지 않습니다. 12.15
HTML:
<!Doctype>
<html>
<head>
<script>
(function (tag,fp,n) {
var d = document;
a = d.createElement(tag), m = d.getElementsByTagName(tag)[0];
a.async = 1;
a.src = fp;
m.parentNode.insertBefore(a, m)
})('script', 'cs.js', 'cs');
</script>
</head>
<body>
<div id="id">click me</div>
</body>
</html>
javascript(cs.js):
;(function(w, d) {
var util = {
getElements : function(selector) {
var result = [];
var hashIndex = selector.indexOf("#");
var dotIndex = selector.indexOf(".");
if(hashIndex > -1){
selector = selector.substring(hashIndex+1);
var domElem = d.getElementById(selector);
console.log(domElem);
if(domElem !=null){
result.push(domElem);
}
}
else if(dotIndex > -1){
selector = selector.substring(dotIndex+1);
var domElem = d.getElementsByClassName(selector);
if(domElem !=null){
result = domElem;
}
}else{
var domElem = d.getElementsByTagName(selector);
if(domElem !=null){
result = domElem;
}
}
return result;
}
};
console.log(util.getElements("#id"));
})(window, document);
는 크롬, 파이어 폭스에서 제대로 작동하지만 오페라는 null
을 제공합니다.
Browser Info:
오페라/9.80 (X11, 리눅스 x86_64의) 프레스토/2.12.388 버전/12.15
이 문제에 대한 어떤 해결 방법?
문제의 실제 예를 나눌 수 있습니까? 한편 [this bin] (http://jsbin.com/ufomam/1/edit)은 W7 용 Opera 12.15에서 완벽하게 작동합니다. –
* complete * reduce 테스트 케이스를 작성하십시오. 우리는 그 snippit에서 무엇이 잘못되었는지 말할 수 없습니다. (그리고 id가'id '라는 가치를 지니고 있다는 것은 그 snippit이 고안되어 작동하지 않는 코드를 반영하지 않을 수도 있음을 암시합니다). – Quentin
FabrícioMatté의 코드는 OS X 용 Opera 12.15에서도 잘 작동합니다. – Quentin