- 浏览: 902865 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
chienchia:
请问下,第4步,vpn做了什么使数据包发送到真实网卡,而不会再 ...
如何使用Android系统自带的VPN服务框架 -
fangyafenqidai:
我只要选第二个就可以呢,怒需要选第一个。之后不会有啥问题。正常 ...
Android Studio 超级简单的打包生成apk -
michaelye1988:
不错,很棒!
getcachedir和getexternalcachedir的区别 -
whlei01:
文章棒棒哒
常用的AS3代码 -
whlei01:
很不错 之前打开及时600M的内存 ,现在打开只有300兆了 ...
flash builder内存不够的解决办法
在编写处理xml的网页时,经常为浏览器兼容性头疼。于是我将常用的xml操作封装为函数。经过一段时间的改进,现在已经很稳定了,用起来很舒服。
函数有——
xml_loadFile:xml同步/异步加载。
xml_transformNode:xsl转换。
xml_text:节点的文本。
selectSingleNode:根据XPath选择单个节点。
selectNodes:根据XPath选择多个节点。
全部代码(zyllibjs_xml.js)——
/*
zyllibjs_xml
XML处理
@author zyl910
注意——
1. Chrome 由于其安全机制限制, 不能读取本地文件。
Reference
~~~~~~~~~
http://www.jinlie.net/?p=302
Chrome浏览器加载XML文档
Update
~~~~~~
[2011-11-02]
定义。
[2011-11-09]
xml_loadFile: 为回调函数加上isError参数。
[2011-11-21]
selectSingleNode
selectNodes
*/
// 加载XML文件并返回XML文档节点
// return: 成功时返回一个对象(同步模式下返回xml文档对象,异步模式下返回操作对象),失败时返回空。
// xmlUrl: xml文件的url。
// funcAsync: 回调函数. function onload(xmlDoc, isError){ ... }
function xml_loadFile(xmlUrl, funcAsync)
{
var xmlDoc = null;
var isChrome = false;
var asyncIs = (null!=funcAsync); // 是否是异步加载。当funcAsync不为空时,使用异步加载,否则是同步加载。
// 检查参数
if (""==xmlUrl) return null;
if (asyncIs)
{
if ("function"!=typeof(funcAsync)) return null;
}
// 创建XML对象
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // Support IE
}
catch(ex)
{
}
if (null==xmlDoc)
{
try
{
// Support Firefox, Mozilla, Opera, etc
xmlDoc = document.implementation.createDocument("", "", null); // 创建一个空的 XML 文档对象。
}
catch(ex)
{
}
}
if (null==xmlDoc) return null;
// 加载XML文档
xmlDoc.async = asyncIs;
if (asyncIs)
{
if(window.ActiveXObject)
{
xmlDoc.onreadystatechange = function(){
if(xmlDoc.readyState == 4)
{
var isError = false;
if (null!=xmlDoc.parseError)
{
isError = (0!=xmlDoc.parseError.errorCode); // 0成功, 非0失败。
}
funcAsync(xmlDoc, isError);
}
}
}
else
{
xmlDoc.onload = function(){
funcAsync(xmlDoc, false);
}
}
}
try
{
xmlDoc.load(xmlUrl);
}
catch(ex)
{
// alert(ex.message) // 如果浏览器是Chrome,则会catch这个异常:Object # (a Document) has no method "load"
isChrome = true;
xmlDoc = null;
}
if (isChrome)
{
var xhr = new XMLHttpRequest();
if (asyncIs) // 异步
{
xhr.onreadystatechange = function(){
if(xhr.readyState == 4)
{
funcAsync(xhr.responseXML, xhr.status != 200);
}
}
xhr.open("GET", xmlUrl, true);
try // 异步模式下,由回调函数处理错误。
{
xhr.send(null);
}
catch(ex)
{
funcAsync(null, true);
return null;
}
return xhr; // 注意:返回的是XMLHttpRequest。建议异步模式下仅用null测试返回值。
}
else // 同步
{
xhr.open("GET", xmlUrl, false);
xhr.send(null); // 同步模式下,由调用者处理异常
xmlDoc = xhr.responseXML;
}
}
return xmlDoc;
}
// 使用XSLT把XML文档转换为一个字符串。
function xml_transformNode(xmlDoc, xslDoc)
{
if (null==xmlDoc) return "";
if (null==xslDoc) return "";
if (window.ActiveXObject) // IE
{
return xmlDoc.transformNode(xslDoc);
}
else // FireFox, Chrome
{
//定义XSLTProcesor对象
var xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
// transformToDocument方式
var result=xsltProcessor.transformToDocument(xmlDoc);
var xmls=new XMLSerializer();
var rt = xmls.serializeToString(result);
return rt;
}
}
// 得到节点的文本
function xml_text(xmlNode)
{
if (null==xmlNode) return "";
var rt;
if (window.ActiveXObject) // IE
{
rt = xmlNode.text;
}
else
{
// FireFox, Chrome, ...
rt = xmlNode.textContent;
}
if (null==rt) rt=xmlNode.nodeValue; // XML DOM
return rt;
}
// 添加方法。为了兼容FireFox、Chrome。
if (!window.ActiveXObject)
{
XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath)
{
var x = this.selectNodes(xpath)
if ( ! x || x.length < 1 ) return null ;
return x[ 0 ];
}
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath)
{
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver( this.ownerDocument == null?this.documentElement : this.ownerDocument.documentElement);
var result = xpe.evaluate(xpath, this , nsResolver, 0 , null );
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);
return found;
}
}
Chrome浏览器加载XML文档
function loadXMLDoc(xml_name)
{
var xmlDoc;
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // Support IE
}
catch(e)
{
try
{
// Support Firefox, Mozilla, Opera, etc
xmlDoc = document.implementation.createDocument("", "", null) ;// 创建一个空的 XML 文档对象。
}
catch(e)
{
alert(e.message);
}
}
// 加载XML文档
try
{
xmlDoc.async = false; // 关闭异步加载
xmlDoc.load(xml_name);
}
catch(e)
{
// alert(e.message) 如果浏览器是Chrome,则会catch这个异常:Object # (a Document) has no method "load",所以,以下实现支持chrome加载XML文档(只是粗略的写下)
var xhr = new XMLHttpRequest();
xhr.open("GET", xml_name, false);
xhr.send(null);
xmlDoc = xhr.responseXML.documentElement;
}
return xmlDoc;
}
BTW,各浏览器加载XML字符串也不同。
IE使用 loadXML() 方法来解析 XML 字符串
FireFox等使用DOMParser 对象解析XML字符串:
var parseXml = new DOMParser();
var doc = parseXml.parseFromString(xml_str,"text/xml");
函数有——
xml_loadFile:xml同步/异步加载。
xml_transformNode:xsl转换。
xml_text:节点的文本。
selectSingleNode:根据XPath选择单个节点。
selectNodes:根据XPath选择多个节点。
全部代码(zyllibjs_xml.js)——
引用
/*
zyllibjs_xml
XML处理
@author zyl910
注意——
1. Chrome 由于其安全机制限制, 不能读取本地文件。
Reference
~~~~~~~~~
http://www.jinlie.net/?p=302
Chrome浏览器加载XML文档
Update
~~~~~~
[2011-11-02]
定义。
[2011-11-09]
xml_loadFile: 为回调函数加上isError参数。
[2011-11-21]
selectSingleNode
selectNodes
*/
// 加载XML文件并返回XML文档节点
// return: 成功时返回一个对象(同步模式下返回xml文档对象,异步模式下返回操作对象),失败时返回空。
// xmlUrl: xml文件的url。
// funcAsync: 回调函数. function onload(xmlDoc, isError){ ... }
function xml_loadFile(xmlUrl, funcAsync)
{
var xmlDoc = null;
var isChrome = false;
var asyncIs = (null!=funcAsync); // 是否是异步加载。当funcAsync不为空时,使用异步加载,否则是同步加载。
// 检查参数
if (""==xmlUrl) return null;
if (asyncIs)
{
if ("function"!=typeof(funcAsync)) return null;
}
// 创建XML对象
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // Support IE
}
catch(ex)
{
}
if (null==xmlDoc)
{
try
{
// Support Firefox, Mozilla, Opera, etc
xmlDoc = document.implementation.createDocument("", "", null); // 创建一个空的 XML 文档对象。
}
catch(ex)
{
}
}
if (null==xmlDoc) return null;
// 加载XML文档
xmlDoc.async = asyncIs;
if (asyncIs)
{
if(window.ActiveXObject)
{
xmlDoc.onreadystatechange = function(){
if(xmlDoc.readyState == 4)
{
var isError = false;
if (null!=xmlDoc.parseError)
{
isError = (0!=xmlDoc.parseError.errorCode); // 0成功, 非0失败。
}
funcAsync(xmlDoc, isError);
}
}
}
else
{
xmlDoc.onload = function(){
funcAsync(xmlDoc, false);
}
}
}
try
{
xmlDoc.load(xmlUrl);
}
catch(ex)
{
// alert(ex.message) // 如果浏览器是Chrome,则会catch这个异常:Object # (a Document) has no method "load"
isChrome = true;
xmlDoc = null;
}
if (isChrome)
{
var xhr = new XMLHttpRequest();
if (asyncIs) // 异步
{
xhr.onreadystatechange = function(){
if(xhr.readyState == 4)
{
funcAsync(xhr.responseXML, xhr.status != 200);
}
}
xhr.open("GET", xmlUrl, true);
try // 异步模式下,由回调函数处理错误。
{
xhr.send(null);
}
catch(ex)
{
funcAsync(null, true);
return null;
}
return xhr; // 注意:返回的是XMLHttpRequest。建议异步模式下仅用null测试返回值。
}
else // 同步
{
xhr.open("GET", xmlUrl, false);
xhr.send(null); // 同步模式下,由调用者处理异常
xmlDoc = xhr.responseXML;
}
}
return xmlDoc;
}
// 使用XSLT把XML文档转换为一个字符串。
function xml_transformNode(xmlDoc, xslDoc)
{
if (null==xmlDoc) return "";
if (null==xslDoc) return "";
if (window.ActiveXObject) // IE
{
return xmlDoc.transformNode(xslDoc);
}
else // FireFox, Chrome
{
//定义XSLTProcesor对象
var xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
// transformToDocument方式
var result=xsltProcessor.transformToDocument(xmlDoc);
var xmls=new XMLSerializer();
var rt = xmls.serializeToString(result);
return rt;
}
}
// 得到节点的文本
function xml_text(xmlNode)
{
if (null==xmlNode) return "";
var rt;
if (window.ActiveXObject) // IE
{
rt = xmlNode.text;
}
else
{
// FireFox, Chrome, ...
rt = xmlNode.textContent;
}
if (null==rt) rt=xmlNode.nodeValue; // XML DOM
return rt;
}
// 添加方法。为了兼容FireFox、Chrome。
if (!window.ActiveXObject)
{
XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath)
{
var x = this.selectNodes(xpath)
if ( ! x || x.length < 1 ) return null ;
return x[ 0 ];
}
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath)
{
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver( this.ownerDocument == null?this.documentElement : this.ownerDocument.documentElement);
var result = xpe.evaluate(xpath, this , nsResolver, 0 , null );
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);
return found;
}
}
Chrome浏览器加载XML文档
引用
function loadXMLDoc(xml_name)
{
var xmlDoc;
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // Support IE
}
catch(e)
{
try
{
// Support Firefox, Mozilla, Opera, etc
xmlDoc = document.implementation.createDocument("", "", null) ;// 创建一个空的 XML 文档对象。
}
catch(e)
{
alert(e.message);
}
}
// 加载XML文档
try
{
xmlDoc.async = false; // 关闭异步加载
xmlDoc.load(xml_name);
}
catch(e)
{
// alert(e.message) 如果浏览器是Chrome,则会catch这个异常:Object # (a Document) has no method "load",所以,以下实现支持chrome加载XML文档(只是粗略的写下)
var xhr = new XMLHttpRequest();
xhr.open("GET", xml_name, false);
xhr.send(null);
xmlDoc = xhr.responseXML.documentElement;
}
return xmlDoc;
}
BTW,各浏览器加载XML字符串也不同。
IE使用 loadXML() 方法来解析 XML 字符串
引用
xmlDoc.loadXML(xml_str);
FireFox等使用DOMParser 对象解析XML字符串:
引用
var parseXml = new DOMParser();
var doc = parseXml.parseFromString(xml_str,"text/xml");
发表评论
-
微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
2018-04-12 17:13 1780此类事件是手机touchmove默认事件行为,可以通过js代 ... -
判断横屏竖屏(三种)
2018-04-10 19:29 1设置页面竖屏或者横屏:portrait:竖屏 ... -
html中通过js获取接口JSON格式数据解析以及跨域问题
2016-11-07 14:43 3066前言:本人自学前端 ... -
网页中插入Flash中<object>标签属性
2014-04-14 10:43 836网页中插入Flash中<obje ... -
Html网页图片滚动代码
2013-04-08 14:26 4563<!--下面是向上滚动代码--> <div ... -
网页中插入FLASH(swf文件)的html代码【二】
2013-04-05 14:01 1469一、简单插入flash图像 <embed src=& ... -
网页中插入FLASH(swf文件)的html代码【一】
2013-04-05 13:40 6238HTML向FLASH传参数的三种方法 原文来处 一、S ... -
getURL或navigateToURL弹出窗口被IE拦截的解决方法
2012-08-16 20:48 1887方法一:通过设置wmode可以解决问题:当wmode=’win ... -
window.location详细介绍
2012-08-13 14:56 1061window.location方法获取URL ... -
Request、Request.Form和Request.QueryString的区别
2012-08-13 14:46 1344Request、Request.Form和Request.Q ... -
js屏蔽(禁止)键盘和鼠标功能键,如屏蔽鼠标右键,F5刷新等
2012-04-01 16:44 2480<!DOCTYPE HTML PUBLIC " ... -
禁止鼠标多次点击选中div中的文字
2012-03-30 16:09 4773<!DOCTYPE html><html&g ... -
html 禁止选择图片
2012-03-30 16:05 1如下: [code="java"] ... -
JS 简单的缓动效果
2012-01-31 14:07 1238<!DOCTYPE HTML> <html ... -
iframe框架取值兼容ie/firefox/chrome的写法
2012-01-11 16:21 1586iframe框架内页: 引用<html> < ... -
在 HTML中显示XML数据的策略
2011-12-29 15:30 1520摘要: HTML 是目前常用的网页标识语言,而 XML 的优点 ... -
AS3和JS互相调用的小技巧 【一】
2011-08-26 14:04 3780我对chm帮助手册小解: 选择“文件”>“新建”> ... -
Frame、Iframe、Frameset 的区别
2010-01-09 17:12 1710框架页有Frame、Iframe、Fr ...
相关推荐
"JS导入导出Excel 兼容IE、Firefox、Chrome等浏览器"这一技术主题,聚焦于如何使用JavaScript(JS)在各种浏览器环境下处理Excel文件,包括古老的Internet Explorer(IE)、Firefox以及Chrome。下面我们将深入探讨这...
"Javascript的IE和Firefox兼容性"则涉及到JavaScript在不同浏览器中的行为一致性问题。Internet Explorer(IE)和Mozilla Firefox是两个历史悠久且具有广泛用户基础的浏览器,它们对JavaScript的支持存在差异,尤其...
本主题将深入探讨如何使用JavaScript在Firefox、Chrome、Opera和Edge等主流浏览器上基于正则表达式(regex)模式实现URL重定向。 1. **JavaScript与浏览器API** JavaScript是浏览器内置的语言,它允许开发者通过...
【标题】中的“纯js写的java搜索框,无数据库,IE,火狐兼容”意味着这是一个使用纯JavaScript编写的搜索功能,它不依赖任何后端数据库,并且可以在Internet Explorer(IE)和Firefox这两种不同的浏览器上正常运行...
本资源提供了一个实现包括增删改查、分页和级联功能的Ajax代码示例,它能够兼容IE、Firefox和Opera等主流浏览器。通过这个示例,我们可以深入学习如何利用Ajax技术来提升用户体验,尤其是在Web应用中。 1. **增删改...
由于不同浏览器对XMLHttpRequest对象的支持程度不同,我们需要编写兼容代码来确保在所有主流浏览器(如IE、Firefox、Chrome、Safari等)中都能正常工作。以下是一些常见的兼容性问题及解决方案: #### 2.1 创建...
由于该函数使用的是标准的HTML和JavaScript语法,因此它能够在支持这些标准的所有现代浏览器中运行良好,包括Firefox、Chrome、Safari等。通过使用绝对定位和基本的HTML元素(如`<div>`),该函数避免了对特定浏览器...
对于支持XMLHttpRequest(XHR)的现代浏览器(如IE7+、Firefox、Chrome、Safari等),可以使用`XMLHttpRequest`对象的`responseXML`属性来解析XML响应。例如: ```javascript var xhr = new XMLHttpRequest(); xhr....
例如,IE浏览器与Firefox、Chrome等现代浏览器在处理某些JavaScript特性时可能存在差异,需要通过polyfill或条件注释来确保代码在各个浏览器中都能正常运行。 在JavaScript的特效实现中,经典的案例包括图片轮播、...
6. **浏览器兼容性**:示例代码使用了ActiveXObject,这是Internet Explorer特有的,对于其他浏览器如Firefox、Chrome、Safari等,需要使用`XMLHttpRequest`的非IE实现。在现代JavaScript开发中,通常会使用`fetch` ...
Firefox扩展插件制作是一个涉及多方面技术的领域,包括JavaScript编程、XML文件结构解析以及对Firefox浏览器API的深入理解。以下是对这些知识点的详细说明: 1. **Firefox扩展(Add-ons)**:Firefox扩展是定制...
本文将详细讲解如何使用JavaScript实现这个功能,同时兼容Chrome、IE、Firefox等主流浏览器。 首先,我们需要明白JavaScript本身并不直接支持创建Excel文件,但可以通过模拟Excel文件的二进制格式来生成。一种常用...
在现代Web开发中,文件上传是一个常见的功能,但要实现跨浏览器兼容性,尤其是在旧版本的Internet Explorer(如IE6、IE7、IE8、IE9)以及Firefox、Chrome和世界之窗等其他浏览器上,可能面临一些挑战。Ajax上传文件...
在现代浏览器中,如Chrome、Firefox、Safari和Edge,可以使用JavaScript原生的`new XMLHttpRequest()`来创建一个新的实例。例如: ```javascript var xhr = new XMLHttpRequest(); ``` 然而,在一些较旧的IE浏览器...
- 所有现代浏览器(如IE、Firefox、Chrome、Safari等)都内置了XML解析器,用于将XML文档转换为可被JavaScript访问的DOM(Document Object Model)对象。 - 微软的XML解析器(如ActiveXObject("Microsoft.XMLDOM")...
XUL overlays是早期的开发方式,依赖于Firefox的XUL(XML User Interface Language)和JavaScript进行交互,而WebExtensions则是目前推荐的方法,基于Chrome的API,具有更好的跨浏览器兼容性。 二、WebExtensions...
在Internet Explorer(IE)和Firefox等不同浏览器中,解析XML字符串的方法有所不同。在IE中,可以使用ActiveX对象`Microsoft.XMLDOM`的`loadXML`方法直接解析XML字符串,如下所示: ```javascript var xmlDoc = new...
1. **DOMParser API**:这是W3C标准的一部分,适用于所有现代浏览器,包括Chrome、Firefox、Safari和Edge等。我们可以创建一个DOMParser实例,然后使用`parseFromString()`方法解析XML字符串。 ```javascript let ...
开发者可能需要确保组件在不同的浏览器(如Chrome、Firefox、Safari等)上都能正常工作。 总之,JavaScript XML Tree是一个用JavaScript编写的用于处理XML数据的组件,它提供了一种直观的树形结构来展示和操作XML。...
不同的浏览器如Chrome、Firefox、Safari、Edge和Internet Explorer(IE)等,在解析JavaScript语法、DOM操作、事件处理、CSS样式等方面可能有各自的理解和实现。例如,一些浏览器可能支持新的ECMAScript特性,而旧...