`
kongshanxuelin
  • 浏览: 931306 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

兼容IE与Firefox浏览器的跨域操作

阅读更多

在我们编写大型Web项目时,有时不可避免的会有跨域读取的操作,一般都会采用script标签的src方式,我也采用了这种方式,但一开始是利用给src赋值的方法实现跨域操作,但很奇怪的是在IE下运行一切正常,但在Firefox浏览器下却不工作,后来采用如下方式解决问题:

if(document.getElementById(this.scriptelementid)){
	var el=document.getElementById(this.scriptelementid);
	var p=el.parentNode;  
	p.removeChild(el);   
}
var head = document.getElementsByTagName("head").item(0);  
var script = document.createElement ("script");  
script.src = url;
script.id=this.scriptelementid;
head.appendChild(script);  
 
分享到:
评论
6 楼 forbe 2009-06-17  
在ff下动态创建的script有onload属性.而在ie下则需要判断它的readyState.  并不是没有办法监测它是否架载完成.
我写的一个函数,代码如下:

//跨域json {src:"",params:"k=1&m=2",cache[0:no,1:cache],fnback[function]}
function includeJS(url,param,cache,fnback){
    var me = arguments.callee;
    var src = url.indexOf("?")=="-1"?url+"?":url;
    var cache = ["","&nocache=" + new Date().getTime()][cache];
    src += param + cache;
    me.Script && me.Script.parentNode.removeChild(me.Script);
    me.Script  = document.createElement("script");
    me.Script.setAttribute("type","text/javascript");
    me.Script.src = src;
    document.getElementsByTagName("head")[0].appendChild(me.Script);
    me.Script.onload = me.Script.onreadystatechange = function(){
        if(me.Script.readyState){
            if(me.Script.readyState.match(/loaded|complete/i)) return fnback();
        }else{
            return fnback();
        }
    }
}
5 楼 olyq 2009-06-05  
firefox可以调用外部JS。应该是外部调用的JS在firefox下解释有错。
4 楼 momodog 2008-11-19  
<div class='quote_title'>kongshanxuelin 写道</div>
<div class='quote_div'>
<p>在我们编写大型Web项目时,有时不可避免的会有跨域读取的操作,一般都会采用script标签的src方式,我也采用了这种方式,但一开始是利用给src赋值的方法实现跨域操作,但很奇怪的是在IE下运行一切正常,但在Firefox浏览器下却不工作,后来采用如下方式解决问题:</p>
<pre name='code' class='js'>if(document.getElementById(this.scriptelementid)){
var el=document.getElementById(this.scriptelementid);
var p=el.parentNode; 
p.removeChild(el);  
}
var head = document.getElementsByTagName("head").item(0); 
var script = document.createElement ("script"); 
script.src = url;
script.id=this.scriptelementid;
head.appendChild(script); 
</pre>
 </div>
<p>我就是用的你的这种方法,也是发现在ie中运行的很好,但是在firefox下面,没办法判断是否js加载完成,所以不能运行,在firefox下面怎么判断动态加载的js加载完成呢?</p>
3 楼 jindw 2008-10-11  
试试setAttribute?
确实有点奇怪。实在不行,每次调用都创建新的script标签。
2 楼 kongshanxuelin 2008-10-10  
冯冀川 写道

会不会是客户端缓存的原因导致的

不是,如果用src动态赋值只在IE下起作用,在Firefox下只能调用一次,如果你的跨域操作有循环的话,根本不会重复被调用,这种动态添加DOM和删除DOM的方式能解决跨域问题,而且效果很好,还没深入研究是什么原因导致的
1 楼 冯冀川 2008-10-10  
会不会是客户端缓存的原因导致的

相关推荐

    图片浏览直接显示[兼容IE,FireFox]

    "图片浏览直接显示[兼容IE, FireFox]"这个标题暗示了我们要讨论的是如何在两种主流浏览器——Internet Explorer(IE)和Firefox中实现图片的无缝浏览体验。尽管IE浏览器已经不再更新,但在某些环境下仍被使用,因此...

    Iframe高度自适应(兼容IE/Firefox、同域/跨域)

    "Iframe高度自适应(兼容IE/Firefox、同域/跨域)"这一主题是关于如何让内嵌在Iframe中的页面能够根据其内容动态调整自身的高度,确保在不同浏览器(如IE和Firefox)以及处理同域和跨域情况时都能正常显示。...

    java跨全域兼容ie/ff/chrome浏览器多文件上传(原创)

    本示例通过"java跨全域兼容ie/ff/chrome浏览器多文件上传(原创)"的标题,我们可以看出这是一个解决浏览器兼容性问题并实现跨域文件上传的解决方案。下面将详细解释这个主题涉及的关键知识点。 1. **跨域资源共享 ...

    Firefox和IE兼容参考

    在网页开发过程中,Firefox(火狐浏览器)和Internet Explorer(IE浏览器)的兼容性问题一直是一大挑战。这两个浏览器在解析HTML、CSS以及JavaScript时有着不同的实现方式,导致某些代码在Firefox下正常运行,但在IE...

    Javascript的IE和Firefox兼容性问题集合

    然而,由于不同的浏览器对JavaScript的支持程度和实现方式存在差异,尤其是Internet Explorer(IE)和Firefox这两款流行浏览器,开发者经常需要面对兼容性问题。以下是一些常见的JavaScript在IE和Firefox上的兼容性...

    difference between IE and Firefox

    标题 "差异:IE与Firefox浏览器解析与开发问题探讨" 在Web开发领域,IE(Internet Explorer)和Firefox是两种历史悠久且具有显著差异的浏览器。它们在HTML、CSS、JavaScript以及Ajax等技术的解析和执行上存在明显的...

    ie6,ie7,ie8和firefox下兼容的图片上传预览

    3. **Firefox的兼容**:Firefox在较早版本中已经支持了File API,所以我们可以使用与现代浏览器相同的方法。不过需要注意的是,Firefox对于跨域安全的限制更严格,如果图片不在同源策略允许的范围内,可能需要设置...

    DOM文档和Javascript的IE和Firefox兼容性

    5. **跨域请求**:IE和Firefox对AJAX跨域请求的处理方式不同,IE使用`XDomainRequest`对象,而其他浏览器使用`XMLHttpRequest`的`withCredentials`属性。 6. **盒子模型**:IE使用独特的盒子模型,其中元素宽度不...

    js复制,兼容firefox和ie

    对于不支持Web Clipboard API的浏览器,可以使用polyfill库,如`clipboard.js`,这个库能够很好地兼容各种浏览器,包括Firefox和IE。 总结起来,"js复制,兼容firefox和ie"涉及的关键知识点包括: 1. JavaScript的...

    ajax兼容IE,FF问题

    然而,由于浏览器之间的差异,尤其是IE(Internet Explorer)与Firefox(Firefox)对Ajax的支持不尽相同,开发者常常会遇到兼容性问题。这篇博文主要探讨了如何解决Ajax在IE和Firefox上的兼容性问题。 首先,让我们...

    javascript和css在IE和Firefox中的不同点及解决兼容性的方案

    JavaScript 和 CSS 在不同的浏览器之间可能存在兼容性问题,尤其是在 Internet Explorer (IE) 和 Mozilla Firefox 这两个浏览器中。本文将详细探讨这些差异,并提供相应的解决策略,以确保网站在各种浏览器中都能...

    工具-excel导出:兼容ie所有版本、谷歌、360、火狐等所有浏览器

    "工具-excel导出:兼容ie所有版本、谷歌、360、火狐等所有浏览器"这个标题表明,我们将讨论一种方法,它允许用户在各种主流浏览器上无缝地导出数据到Excel文件。描述中的"excel导出:兼容ie所有版本、谷歌、360、...

    上传图片预览-兼容IE6,IE7,IE8,FF

    标题中的“上传图片预览-兼容IE6,IE7,IE8,FF”指的是一个Web开发的技术解决方案,目的是实现图片上传前的预览功能,并确保该功能在早期版本的Internet Explorer(IE6、IE7、IE8)以及Firefox浏览器上都能正常工作...

    finereport跨域打印文档

    6. **浏览器兼容性**:考虑到不同的浏览器对跨域策略和打印功能的支持程度不同,开发者需要确保代码在主流浏览器(如Chrome、Firefox、IE/Edge等)中都能正常工作。 7. **安全性与性能优化**:在实施跨域打印时,...

    js、css在IE和火狐上的差异和处理方法

    然而,由于不同的浏览器对这两者的支持和实现存在差异,开发者经常需要面对兼容性问题,尤其是针对Internet Explorer(IE)和Firefox这两个历史悠久且具有显著差异的浏览器。以下是对"js、css在IE和火狐上的差异和...

    兼容IE和Firefox的javascript获取iframe文档内容的函数

    值得注意的是,虽然上述方法可以解决IE和Firefox的兼容问题,但在现代浏览器中,由于安全性的增强,直接通过JavaScript访问iframe内容可能会遇到跨域问题。X-Frame-Options HTTP响应头可以用来防止浏览器加载其他域...

    WebSocket兼容到低版本浏览器

    由于旧版本的浏览器(如IE8、9,早期版本的Firefox、Chrome)不支持WebSocket,我们需要寻找替代方案。一种常见的解决方法是使用Flash Socket或JSONP(JSON with Padding)来模拟WebSocket的功能。 1. Flash Socket...

    报表开发工具FineReport在ie8下的跨域提交

    1. **对于支持HTML5的现代浏览器**(如Chrome、Firefox等),可以使用`postMessage()`方法实现跨域通信。 2. **对于不支持HTML5的老式浏览器**(如IE8),可以通过修改`window.name`属性的方式实现跨域通信。 #### ...

    js实现iframe框架取值的方法(兼容IE,firefox,chrome等)

    本文将详细介绍如何使用JavaScript在`iframe`框架中获取值,同时兼容IE、Firefox、Chrome等主流浏览器。 首先,我们需要理解`iframe`的基本结构。一个`iframe`标签通常包含`id`和`src`属性,`id`用于JavaScript访问...

    兼容ie6、ie7、ie8 和FF的本地上传图片预览

    标题中提到的“兼容ie6、ie7、ie8 和FF的本地上传图片预览”主要涉及以下技术点: 1. **FileReader API**:这是一个HTML5的新特性,用于读取文件。在支持的浏览器中,可以通过`FileReader.readAsDataURL(file)`方法...

Global site tag (gtag.js) - Google Analytics