javasript 跨文档调用技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
javasript 跨文档调用技术

这是一种很有前途的技术,可惜生不逢时,IE刚打垮网景,火狐又冒出来了。这种技术是我在设计超级数组对象时发现的。由于直接继承原生数组问题多, 我只有用Object与Array的原型方法构建一个新类。不用说,效率不太理想。直到我已把超级数组臻至完美的今天,我还在不断寻找新的替代方案,于是 我就想到用另一个文档的数组对象来构建。经测试,IE下是完美的。后来我又发现早在2006年全知全能的DE大神早已做了这样的探索,在《How To Subclass The JavaScript Array Object》中应用这种技术,我只不过是重新把它发挖出来而已。但是, 以后就没有下文了,DE大神在他的Base2类库构建Array2对象时也没有应用这种技术。不明真相的我一头扎下去,哎呀!DE大神你真坏,有陷阱也不 通报声! 下面就拿DE大神的例子改一下,演示究竟出了什么状况?! window.onload = function(){ //创建一个iframe var iframe = document.createElement(iframe); iframe.style.display = none; document.body.appendChild(iframe); // 取得iframe文档的数组对象 frames[frames.length - 1].document.write( scriptparent.Array2 = Array;\/script); var a = Array2(1,2,3,4), b = a.slice(2) alert(b instanceof Array)//万恶的safari与firefox总是试图把沙箱文档的数组实例转化为本地文档的数组实例 a.push(5); alert(a instanceof Array)//同上,safari与firefox受影响的方法是所有返回数组的方法……晕 } 运行代码 为了方便,我把iframe中的文档对象的javascript环境中的数组对象称之为沙箱数组,意即,它不受本地数组对象影响。对,本地数组的原 型进行扩展,不会殃及沙箱数组。俗话说,龙生龙,凤生风,老鼠的儿子会打洞!事实也应该如此!看,firefox与safari做了什么好事!沙箱数组变 成原生数组了,我们在沙箱数组上做的扩展成了废物了!而且现在是linux大多数系统捆绑firefox,Mac捆绑safari,真不好办…… 别以为跨文档调用技术只能干这事,只是它的潜力还有待发掘而已。现在再解释一下上面那段用到的长长的定语。什么叫做“iframe中的文档对象的 javascript环境……”?由于框架技术的发展,一个页面并不只有一个文档对象(在HTML5中,有关框架的标签只死剩iframe了)。最顶层的 我们称之为本地文档,iframe与frame的文档我称之为沙箱文档。由于它们的相对独立性,人们最喜欢用iframe做富文本编辑器,省得调用 document.execCommand( BackColor, , red )命令,整个页面都红了。不过,本地文档也好,iframe文档也好,它们都属于HTML文档。另,创建HTML文档也不单止iframe标签 (frame标签我向来无视),还有ActiveXObject与createDocument,DOMParser等方法。 ActiveXObject是指ActiveXObject(htmlfile),谷歌的gtalk就是用它结合其他技术实现push的技术。 ActiveXObject(htmlfile)创建的文档是一个完美的HTML文档,它拥有 document.title,document.body等HTML DOM专有的属性,还能运行javascript。全局变量this就是我们要找的全局对象,它还拥有我们想要的一 切,Array,Boolean,String,Date等等。 再看w3c那一大堆方法…… createHTMLDocument(title) title参数为tilte元素的innerText。 window.onload = function(){ try{ var doc = document.implementation.createHTMLDocument(跨文本调用技术 by 司徒正美); var html = doc.documentElement

文档评论(0)

fzhuixlu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档