我在我的應用中使用客戶端的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);
它正常工作在瀏覽器,Firefox但在歌劇它給null
。
Browser Info:
歌劇院/ 9.80(X11,Linux的x86_64的)的Presto/2.12.388版本/ 12.15
任何辦法解決這個問題?
你能分享一個現場問題的例子嗎?與此同時,[本bin](http://jsbin.com/ufomam/1/edit)在Opera 12.15 for W7上完美運行。 – 2013-05-03 06:04:29
嘗試構建一個*完整的*減少的測試用例。我們不能說出那個狙擊手有什麼問題。 (如果id的值是'id',則表明即使是這個snippit也是可以設想的,並且可能不會反映那些不工作的代碼)。 – Quentin 2013-05-03 06:04:42
FabrícioMatté的代碼在Opera 12.15上也可以正常工作。 – Quentin 2013-05-03 06:07:12