我迫切需要在这一个一定的帮助。
我创建一个<script>紧密平行,并再现的问题,另一个更复杂的<script>,我已经在其他地方写的。
下面介绍一下它的作用:
- 在页上创建一个<iframe>并插入一个<div>
- 创建并附加一个文档到<IFRAME>,其中包含一个<SCRIPT>定义几个功能(包括一个回调函数和一个加载外部<SCRIPT>的函数使用AJAX)
- 后者外部脚本只是给回调函数,该函数调用产生一个文件,并将其追加的函数的调用的<IFRAME>很; 这应该有效地覆盖<SCRIPT>
所涉及的三个文件分别是:
- http://troy.onespot.com/static/document_write/index.html (主页)
- http://troy.onespot.com/static/document_write/main.js (第一<SCRIPT>其的加载)
- http://troy.onespot.com/static/document_write/jsonp.js (在<SCRIPT>通过jQuery的$就()方法加载)
这一切都在Firefox,Safari和Chrome浏览。 它打破了在Internet Explorer和Opera。 什么情况是,在main.js渲染()函数执行,并且所有三个警报被解雇,但在<IFRAME>不会被覆盖的文档。 我不能告诉正在创建或写入到的文档,或者如果一个人都没有。
如果我在渲染()函数的开头添加调试代码(如执行console.log(文件)),工作的浏览器似乎得到现有<IFRAME>文档的句柄,并列出下面的属性包括在内。 Internet Explorer还似乎找到某种形式的文件。 我只是不知道为什么它不会让我将其覆盖。
难道是范围的问题吗? 也许我使用document.write()的,document.open()或document.close()方法不当,以及Firefox和其他一些浏览器只是让我逃脱它?
一个可能的线索:如果我参加渲染()函数出了胆量(即,只是把它们在main.js负载()之后),这工作正常。 这表明,我认为这就是我没怎么使用document.open()等,但不论如何,到时回调()函数被执行,文档对象不可用,或已经超出了范围,或类似的东西。
这有我完全难倒,这是与即将发生的最后期限非常重要的项目。 我不是一个黑客或替代方法上面,如果它让我摆脱困境。 任何帮助或洞察力会非常感激!
的console.log()中的文档属性的列表:
ATTRIBUTE_NODE: 2 CDATA_SECTION_NODE: 4 COMMENT_NODE: 8 DOCUMENT_FRAGMENT_NODE: 11 DOCUMENT_NODE: 9 DOCUMENT_POSITION_CONTAINED_BY: 16 DOCUMENT_POSITION_CONTAINS: 8 DOCUMENT_POSITION_DISCONNECTED: 1 DOCUMENT_POSITION_FOLLOWING: 4 DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32 DOCUMENT_POSITION_PRECEDING: 2 DOCUMENT_TYPE_NODE: 10 ELEMENT_NODE: 1 ENTITY_NODE: 6 ENTITY_REFERENCE_NODE: 5 NOTATION_NODE: 12 PROCESSING_INSTRUCTION_NODE: 7 TEXT_NODE: 3 URL: "http://localhost/projects/test/ajax_loader/document_write/index.html" activeElement: HTMLBodyElement addEventListener: function addEventListener() { adoptNode: function adoptNode() { alinkColor: "" all: HTMLCollection anchors: HTMLCollection appendChild: function appendChild() { applets: HTMLCollection attributes: null baseURI: "http://localhost/projects/test/ajax_loader/document_write/index.html" bgColor: "" body: HTMLBodyElement captureEvents: function captureEvents() { characterSet: "UTF-8" charset: "UTF-8" childNodes: NodeList clear: function clear() { cloneNode: function cloneNode() { close: function close() { compareDocumentPosition: function compareDocumentPosition() { compatMode: "BackCompat" cookie: "__gads=ID=62bb88ab20ac9451:T=1256683145:S=ALNI_Mbso-nFjAvRzYhCSwhiuaDh84G8CA" createAttribute: function createAttribute() { createAttributeNS: function createAttributeNS() { createCDATASection: function createCDATASection() { createComment: function createComment() { createDocumentFragment: function createDocumentFragment() { createElement: function createElement() { createElementNS: function createElementNS() { createEntityReference: function createEntityReference() { createEvent: function createEvent() { createExpression: function createExpression() { createNSResolver: function createNSResolver() { createNodeIterator: function createNodeIterator() { createProcessingInstruction: function createProcessingInstruction() { createRange: function createRange() { createTextNode: function createTextNode() { createTreeWalker: function createTreeWalker() { defaultCharset: "iso-8859-1" defaultView: DOMWindow designMode: "off" dir: "" dispatchEvent: function dispatchEvent() { doctype: null documentElement: HTMLHtmlElement documentURI: "http://localhost/projects/test/ajax_loader/document_write/index.html" domain: "localhost" elementFromPoint: function elementFromPoint() { embeds: HTMLCollection evaluate: function evaluate() { execCommand: function execCommand() { fgColor: "" firstChild: HTMLHtmlElement forms: HTMLCollection getCSSCanvasContext: function getCSSCanvasContext() { getElementById: function getElementById() { getElementsByClassName: function getElementsByClassName() { getElementsByName: function getElementsByName() { getElementsByTagName: function getElementsByTagName() { getElementsByTagNameNS: function getElementsByTagNameNS() { getOverrideStyle: function getOverrideStyle() { getSelection: function getSelection() { hasAttributes: function hasAttributes() { hasChildNodes: function hasChildNodes() { hasFocus: function hasFocus() { height: 150 images: HTMLCollection implementation: DOMImplementation importNode: function importNode() { inputEncoding: "UTF-8" insertBefore: function insertBefore() { isDefaultNamespace: function isDefaultNamespace() { isEqualNode: function isEqualNode() { isSameNode: function isSameNode() { isSupported: function isSupported() { jQuery1258269389622: 2 lastChild: HTMLHtmlElement lastModified: "" linkColor: "" links: HTMLCollection localName: null location: Location lookupNamespaceURI: function lookupNamespaceURI() { lookupPrefix: function lookupPrefix() { namespaceURI: null nextSibling: null nodeName: "#document" nodeType: 9 nodeValue: null normalize: function normalize() { open: function open() { ownerDocument: null parentElement: null parentNode: null plugins: HTMLCollection preferredStylesheetSet: null prefix: null previousSibling: null queryCommandEnabled: function queryCommandEnabled() { queryCommandIndeterm: function queryCommandIndeterm() { queryCommandState: function queryCommandState() { queryCommandSupported: function queryCommandSupported() { queryCommandValue: function queryCommandValue() { querySelector: function querySelector() { querySelectorAll: function querySelectorAll() { readyState: "complete" referrer: "http://localhost/projects/test/ajax_loader/document_write/index.html" releaseEvents: function releaseEvents() { removeChild: function removeChild() { removeEventListener: function removeEventListener() { replaceChild: function replaceChild() { scripts: HTMLCollection selectedStylesheetSet: null styleSheets: StyleSheetList textContent: null title: " Page" vlinkColor: "" width: 300 write: function write() { writeln: function writeln() { xmlEncoding: null xmlStandalone: false xmlVersion: null