Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
Javascript/AJAX not working in Opera, works perfect in FF/IE/Chrome
我目前在一个名为getresults.js:的文件中有这个Javascript
function getItems(str)
{
if (str=="")
{
document.getElementById("getItems").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("getItems").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/include/retrieveitems.php?q="+str,true);
xmlhttp.send();
}
这是由以下事件引起的:
onclick="getItems('all')"
它可以在Firefox、IE、Chrome中完美运行。。但歌剧院拒绝演出。我的访客中有一小部分是Opera用户,但仍然。。我宁愿让它发挥作用。可以在此处找到实时url:http://tf2g.com/gallery
如果有人能帮忙的话,非常感谢!
失败的原因是事件处理程序根本没有调用您的getItems()方法。它看到Opera的Microdata支持中的document.getItems()方法(http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html),并调用它。这是JavaScript作用域的问题:元素本身及其文档都在作用域中,因此此处定义的方法/属性将能够隐藏您在全局作用域中定义的方法和属性。
很高兴Opera很早就实现了Microdata,所以你注意到了这一点:)
最简单的修复方法是重命名函数,以避免与Microdata的名称冲突。您也可以使用addEventListener(),而不是在标记中写onclick="-如果您这样做,函数的作用域就是它创建的作用域,所以您不会遇到这样的gotchas。
window.addEventListener('load', function(){
for( var i=0,l;l=document.links[i]; i++ )if( l.hash){
l.addEventListener( 'click', function(){
getItems(this.hash.substr(1));
}, false);
}
}, false);
我调试了一下您的链接,发现AJAX请求没有问题。事实上,在jquery.min.js文件中有一个未处理的异常,它阻止了其他javascript代码的运行。
我所做的步骤:我打开了Opera DragonFly(Ctrl+Shft+I),这是一个类似火球的页面,并刷新了页面。我在"getItems()"中插入了断点,发现代码没有到达那里。通过Dragonfly控制台,我编写了"getItems('all');",ajax正如预期的那样运行。
O
- IE/Chrome中未定义的函数,但Firefox中没有
- 滚动在Chrome中有效,但在Firefox或IE中无效
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- 如何编写在Chrome和IE中正常工作的JavaScript
- Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
- JavaScript可以在IE+Chrome中使用,但不能在FF中使用
- 在 Java 中使用 IE/Chrome HTML 渲染器或使用 JavaScript 存储文件
- Javascript - 附加到文本区域值 - IE Chrome 和 Firefox
- Src 更改在 Firefox 中工作,而不是在 IE/Chrome 中
- HTML5游戏-工作在IE, Chrome.在FireFox中失败…直到我导航到一个.mp3文件…然后它才工作
- JQuery脚本,适用于Firefox,而不是在IE, Chrome
- jquery不工作在IE, Chrome,工作在FF
- 创建CSV并打开JS不工作在IE, Chrome
- OpenLayers 3旋转示例在Win32触摸设备上的IE/Chrome嵌入式WebBrowser控件中表现不同
- preventDefault()对一个多选择,不同的行为在Firefox - IE - Chrome
- Js工作在IE, Chrome,但不是Firefox
- Ie /chrome检查器导致重画
- 展开嵌套无序列表和水平显示在IE/Chrome/FF
- Firefox与IE/Chrome中的事件处理程序
- Firefox将文本叠加在错误的位置,而不是在Firefox中工作(在IE, Chrome和safari中很好)