document.onreadystatechange_js转json格式

document.onreadystatechange_js转json格式标准参考无。问题描述onreadystatechange事件通常用在基于XMLHttpRequest对象的AJAX应用中,当的该对象的loadstate改变时,会触发此事件。但在IE

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

标准参考

无。

问题描述

onreadystatechange 事件通常用在基于 XMLHttpRequest 对象的 AJAX 应用中,当的该对象的 load state 改变时,会触发此事件。

但在 IE 中 onreadystatechange 事件是其私有实现的,用于数据加载的 IMG、SCRIPT 和 LINK 标记,常常被误用 onreadystatechange 事件而导致在非 IE 浏览器中无法得到预期结果。

造成的影响

onreadystatechange 事件处理在各浏览器支持不一致,可能会导非预期结果。

受影响的浏览器

    

问题分析

onreadystatechange 事件是微软对 IE 浏览器的私有事件扩充,所有元素都存在 onreadystatechange 事件。

下列元素对象总可以触发此事件,因为他们均会加载数据:APPLET,DOCUMENT,FRAME,FRAMESET,IFRAME,IMG,LINK,OBJECT,SCRIPT 和 XML 元素。

其他元素对象仅当 DHTML Behavior 被追加后会触发 onreadystatechange 事件。

其具体信息可以参照 MSDN 说明:http://msdn.microsoft.com/en-us/library/ms536957(VS.85).aspx。

本文中将主要以 IMG、SCRIPT、LINK 这三个元素对象为例来检测浏览器对他们的 onreadystatechange 事件支持程度。

首先,分析以下代码,将 onreadystatechange 事件作为内联事件分别写于 IMG、SCRIPT 和 LINK 标记中:

<script> function OnStateChangeImage(image) {

document.getElementById (‘img-info’).innerHTML += ‘<br />readyState: ‘ + image.readyState;

}

function OnStateChangeScript(script) {

document.getElementById (‘script-info’).innerHTML += ‘<br />readyState: ‘ + script.readyState;

}

function OnStateChangeLink(link) {

document.getElementById (‘link-info’).innerHTML += ‘<br />readyState: ‘ + link.readyState;

} </script> <span id=”link-info” >The link is loading.</span><br /> <span id=”img-info” >The image is loading.</span><br /> <span id=”script-info”>The script is loading.</span><br /> <link rel=”stylesheet” type=”text/css” href=”http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/css/article.css” onreadystatechange=”OnStateChangeLink(this)” /> <img src=”w3c.png” onreadystatechange=”OnStateChangeImage (this)” /> <script src=’http://code.jquery.com/jquery-1.4.js’ onreadystatechange=”OnStateChangeScript(this)”></script>

在各浏览器输出如下:

        

    The image is loading.

The image readyState: complete     The image is loading.

    The script is loading.

The script readyState: loading

The script readyState: loaded

The script readyState: complete     The scirpt is loading

    The link is loading.

The link readyState: complete     The link is loading

即:非 IE 浏览器均不支持触发 IMG、SCRIPT 和 LINK 标记的内联 onreadystatechange 事件。

让后,下面将分析动态创建的 IMG、SCRIPT 标记的在各浏览器中能否触发 onreadystatechange 事件:

function loadJS(url) { var domScript = document.createElement(‘script’); domScript.onreadystatechange = function() { var divElement = document.createElement(‘div’); divElement.appendChild(document.createTextNode(‘readyState:’+ domScript.readyState +’ 动态创建的 SCRIPT 标记可以触发 onreadystatechange 事件’)); document.body.appendChild(divElement); } domScript.src = url; document.getElementsByTagName(‘head’)[0].appendChild(domScript);} function loadIMG(url) { var domImage = document.createElement(‘img’); domImage.onreadystatechange = function() { var divElement = document.createElement(‘div’); divElement.appendChild(document.createTextNode(‘readyState:’+ domImage.readyState +’ 动态创建的 IMG 标记可以触发 onreadystatechange 事件’)); document.body.appendChild(divElement); } domImage.src = url; document.getElementsByTagName(‘head’)[0].appendChild(domImage);} function loadCSS(url) { var domLink = document.createElement(‘link’); domLink.onreadystatechange = function() { var divElement = document.createElement(‘div’); divElement.appendChild(document.createTextNode(‘readyState:’+ domLink.readyState +’ 动态创建的 LINK 标记可以触发 onreadystatechange 事件’)); document.body.appendChild(divElement); } domLink.rel = ‘stylesheet’; domLink.type = ‘text/css’; domLink.href = url; document.getElementsByTagName(‘head’)[0].appendChild(domLink);} window.onload=function (){ //执行动态加载外部 JS 文件 loadJS(‘http://code.jquery.com/jquery-1.4.js’); //执行动态加载图片文件 loadIMG(‘w3c.png’); //执行动态加载css文件 loadCSS(‘http://www.cnblogs.com/http://www.cnblogs.com/../css/article.css’);}

各浏览器输出如下:

            

    readyState:complete 动态创建的 IMG 标记可以触发 onreadystatechange 事件     readyState:undefined 动态创建的 IMG 标记可以触发 onreadystatechange 事件     无内容输出

    readyState:loading 动态创建的 SCRIPT 标记可以触发 onreadystatechange 事件

readyState:loaded 动态创建的 SCRIPT 标记可以触发 onreadystatechange 事件     readyState:loaded 动态创建的 Script 标记可以触发 onreadystatechange 事件     无内容输出

    readyState:complete 动态创建的 LINK 标记可以触发 onreadystatechange 事件     readyState:undefined 动态创建的 LINK 标记可以触发 onreadystatechange 事件     无内容输出

可见,此次测试中,除 IE 浏览器外,Opera 对于动态创建的 IMG、SCRIPT 和 LINK 标记也可以触发 onreadystatechange 事件,但他对不同元素加载过程中触发该事件的频率以及 readyState 状态值的支持细节又不同于 IE。

【注】:对于 MSDN 中其他标记或对象在非 IE 浏览器中支持 onreadystatechange 事件的情况,本文将不再一一验证,读者如有兴趣可以自行测试。

解决方案

在现行 W3C 标准规范中仅有 XmlHttpRequest 对象中存在 onreadystatechange 事件 ( 请参考 XMLHttpRequest 规范 )。

对于其他元素或对象请慎用 onreadystatechange 事件,因为他只有 IE 浏览器支持,而 Opera 浏览器则只是部分支持。

如果使用 onreadystatechange 是为了处理脚本加载(回调)的问题,请参考 BX9013: 动态引入的外部 JS 文件在各浏览器中的加载顺序不一致 一文“解决方案”中的内容。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167569.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NOIP 2008 普及组 传球游戏「建议收藏」

    NOIP 2008 普及组 传球游戏「建议收藏」超时#include<bits/stdc++.h>usingnamespacestd;intn,m,ans;//第cnt次传球后,球在编号为x的同学手上voiddfs(intcnt,intx){ if(cnt==m){ if(x==0)ans++; return; } dfs(cnt+1,(x+1)%n); dfs(cnt+1,(x-1+n)%n); }intmain(){.

    2022年7月14日
    58
  • keil注册机激活的方法

    keil注册机激活的方法一次用注册机产生密码,在license里可能不可以激活。第一次运行一定要记住,要以管理员的身份运行mdk。以管理员的身份运行,注册成功。记录一下

    2022年6月6日
    81
  • windows安装git教程_git安装教程图文详解

    windows安装git教程_git安装教程图文详解1.版本控制概述1.1Git什么是版本控制在我们日常生活中,使用微信6.5.3版本,QQ7.4版本,Chrome43.0.2357.65版本,表示的都是某些软件使用的版本号。这些软件在开发过程中,版本都是由1不断的变化而来。对于软件公司来说,软件的开发过程中的变化,都需要记录下来,从而方便软件开发的管理,这个过程就是版本控制。也就是,记录若干文件内容变化,以便将来查阅特定版本修订情况的系统(软件)。1.2常见版本控制软件CVS表示并发版本系统,是老版本控制软件系统,市面上基本上不使用了。

    2025年9月7日
    5
  • f1 score计算_F1值

    f1 score计算_F1值F1分数(F1Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种加权平均,它的最大值是1,最小值是0。1.TP、TN、FP、FN解释说明真实情况 预测结果 正例 反例 正例 TP(真正例) FN(假反例) 反例 FP(假正例) TN(真反例) 行表示预测的label值,列表示真实label值 TP:TruePositive,被判定为正样本,事实上也是

    2022年8月31日
    3
  • mysql报错注入_mysql报错注入[通俗易懂]

    mysql报错注入_mysql报错注入[通俗易懂]报错注入这里主要介绍3种MySQL数据库报错注入的发法,分别是updatexml、floor和exp。1.updatexmlupdatexml的报错原理从本质上来说就是函数的报错。selectupdatexml(1,concat(0x7e,(selectversion()),0x7e),1);这里还是使用前面的例子,举出一个爆破数据库版本的样例Payload:爆破数据库版本信息?id=1’+…

    2022年9月30日
    3
  • 什么是数据安全,为什么需要保证数据安全「建议收藏」

    什么是数据安全,为什么需要保证数据安全「建议收藏」WHAT何为数据安全?数据安全指的是用技术手段识别网络上的文件、数据库、帐户信息等各类数据集的相对重要性、敏感性、合规性等,并采取适当的安全控制措施对其实施保护等过程。与边界安全、文件安全、用户行为安全等其他安全问题相同,数据安全并非是唯一一种能提升信息系统安全性的技术手段,也不是一种能全面保障信息系统安全的技术手段。它就是一种能够合理评估及减少由数据存储所带来的安全风险的技术方式。为什么需…

    2022年5月11日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号