javascript跨文档调用技术

javascript跨文档调用技术

ID:35514925

大小:259.50 KB

页数:12页

时间:2019-03-25

javascript跨文档调用技术_第1页
javascript跨文档调用技术_第2页
javascript跨文档调用技术_第3页
javascript跨文档调用技术_第4页
javascript跨文档调用技术_第5页
资源描述:

《javascript跨文档调用技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这是一种很有前途的技术,可惜生不逢时,IE刚打垮网景,火狐又冒出来了。这种技术是我在设计超级数组对象时发现的。由于直接继承原生数组问题多,我只有用Object与Array的原型方法构建一个新类。不用说,效率不太理想。直到我已把超级数组臻至完美的今天,我还在不断寻找新的替代方案,于是我就想到用另一个文档的数组对象来构建。经测试,IE下是完美的。后来我又发现早在2006年全知全能的DE大神早已做了这样的探索,在《HowToSubclassTheJavaScriptArrayObject》中应用这种技术,我只不过是重新把它发挖出来而

2、已。但是,以后就没有下文了,DE大神在他的Base2类库构建Array2对象时也没有应用这种技术。不明真相的我一头扎下去,哎呀!DE大神你真坏,有陷阱也不通报声!下面就拿DE大神的例子改一下,演示究竟出了什么状况?!window.onload=function(){//创建一个iframevariframe=document.createElement("iframe");iframe.style.display="none";document.body.appendChild(iframe);//取得iframe文档的数组对

3、象frames[frames.length-1].document.write("");vara=Array2(1,2,3,4),b=a.slice(2)alert(binstanceofArray)//万恶的safari与firefox总是试图把沙箱文档的数组实例转化为本地文档的数组实例a.push(5);alert(ainstanceofArray)//同上,safari与firefox受影响的方法是所有返回数组的方法……晕}运行代码为了方便,我把

4、iframe中的文档对象的javascript环境中的数组对象称之为沙箱数组,意即,它不受本地数组对象影响。对,本地数组的原型进行扩展,不会殃及沙箱数组。俗话说,龙生龙,凤生风,老鼠的儿子会打洞!事实也应该如此!看,firefox与safari做了什么好事!沙箱数组变成原生数组了,我们在沙箱数组上做的扩展成了废物了!而且现在是linux大多数系统捆绑firefox,Mac捆绑safari,真不好办……别以为跨文档调用技术只能干这事,只是它的潜力还有待发掘而已。现在再解释一下上面那段用到的长长的定语。什么叫做“iframe中的文

5、档对象的javascript环境……”?由于框架技术的发展,一个页面并不只有一个文档对象(在HTML5中,有关框架的标签只死剩iframe了)。最顶层的我们称之为本地文档,iframe与frame的文档我称之为沙箱文档。由于它们的相对独立性,人们最喜欢用iframe做富文本编辑器,省得调用document.execCommand("BackColor","","red")命令,整个页面都红了。不过,本地文档也好,iframe文档也好,它们都属于HTML文档。另,创建HTML文档也不单止iframe标签(frame标签我向来无视

6、),还有ActiveXObject与createDocument,DOMParser等方法。ActiveXObject是指ActiveXObject("htmlfile"),谷歌的gtalk就是用它结合其他技术实现push的技术。ActiveXObject("htmlfile")创建的文档是一个完美的HTML文档,它拥有document.title,document.body等HTMLDOM专有的属性,还能运行javascript。全局变量this就是我们要找的全局对象,它还拥有我们想要的一切,Array,Boolean,St

7、ring,Date等等。再看w3c那一大堆方法……createHTMLDocument(title)title参数为tilte元素的innerText。window.onload=function(){try{vardoc=document.implementation.createHTMLDocument('跨文本调用技术by司徒正美');varhtml=doc.documentElementalert(html)//测试是否存在HTML元素alert(html.tagName)//注意大小写,HTML文档会把元素节点的ta

8、gName与nodeName大写化,按理应该会返回“HTML”varbody=doc.bodyalert(body);//测试document.bodyif("title"indoc){alert(doc.title)//测试document.title}varhead=do

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。