分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

ajax关于主流中的异类:应对Opera(四)

发布时间:2023-09-06 01:33责任编辑:蔡小小关键词:暂无标签

修改示例以支持Opera

<!DOCTYPE html><html> ???<head> ???????<meta charset="utf-8" /> ???????<title></title> ???</head> ???<body> ???????<div> ???????????<button>Apples</button> ???????????<button>Cherries</button> ???????????<button>Bananas</button> ???????</div> ???????<div id="target"> ???????????press a button ???????</div> ???????<script type="text/javascript"> ???????????var buttons=document.getElementsByTagName("button") ???????????for(var i=0;i<buttons.length;i++){ ???????????????buttons[i].onclick=handleButtonPress; ???????????} ???????????var httpRequest; ???????????function handleButtonPress(e){ ???????????????httpRequest=new XMLHttpRequest(); ???????????????httpRequest.onreadystatechange=handleResponse; ???????????????httpRequest.open("GET",e.target.innerHTML+".html") ???????????????httpRequest.send() ???????????} ???????????function handleResponse(){ ???????????????if(httpRequest.readyState==4&&httpRequest.status==200){ ???????????????????document.getElementById("target").innerHTML=httpRequest.responseText; ???????????????} ???????????} ???????</script> ???</body></html>

    第一个问题是Opera在触发readystatechange事件时不会生成一个Event对象。这就意味着必须把XMLHttpRequest对象指派给一个全局变量,这样才能在以后引用它。我定义一个名为的var,随后在handleButtonPress函数创建对象以及handleResponse函数处理已经完成的请求时调用了它。看上去可能不像是什么大问题,但如果用户在请求处理过程中按下按钮,全局变量就会被指派给一个新的XMLHttpRequest对象,你就无法再与原来那个请求交互了。
    第二个问题是Opera没有在XMLHttpRequest对象上定义就绪状态常量,这就意味着你必须用之前表格中展示的数值来比对readyState属性的值。必须得检测4个值,而不是XMLHttpRequest.DONE。

ajax关于主流中的异类:应对Opera(四)

原文地址:https://www.cnblogs.com/Sarah119/p/8169061.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved