我现在正在运行这个问题
我想做一些非常简单的事情:
提取iframe中包含的XML内容并在父文档中使用它(在我的情况下,将XML发送到ActiveX以获取签名)
这是一个在哪里可以找到迷你的网址 project zip
我的目标浏览器是 IE9 / 10 。
父文件:
<!-- Main hero unit for a primary marketing message or call to action -->
<div class="hero-unit">
<h1>Parapheur 5.0</h1>
<div class="alert-block">Please use buttons for actions</div>
<div class="btn-group">
<a class="btn btn-success btn-mini" onclick="javascript:expandViewport('viewport1');">Expand viewport »</a>
<a class="btn btn-info btn-mini" onclick="javascript:collapseViewport('viewport1');">Collapse viewport »</a>
<a class="btn btn-primary btn-mini" onclick="javascript:extractXml('#viewport1');">Extract XML »</a>
</div>
<div class="alert-block"></div>
<iframe id="viewport1" src="xml/data.xml" width="1024px" height=""></iframe>
<div class="alert-block"></div>
</div>
<div id="content" class="alert-info"></div>
application.js :
function extractXml(id,content) {
console.log("Starting extraction of XML from within IFrame : " + id);
/*
var lastIndexOfSlash = document.getElementById(id).src.lastIndexOf("/");
var doc = document.getElementById(id).src.substring(lastIndexOfSlash);
$.get('xml/'+doc,function(xml){
console.log(xml);
});
*/
console.log($(id).contentDocument);}
答案 0 :(得分:0)
似乎在IE9下从iframe加载xml的唯一方法是执行以下代码行。
document.getElementById("viewport1").contentWindow.document.firstChild.nextSibling.textContent
答案 1 :(得分:0)
您可以在IE9中访问iframe xml,如下所示。
var frameIE = document.getElementById("yourIframeElementID");
var textXml = frameIE.contentWindow.document.firstChild.innerText;//Get the text
var regex = new RegExp('- <', 'g');
textXml = textXml.replace(regex, "<");
var xml = $.parseXML(textXml);//Use jquery to parse xml
xml = $(responseData);
//Now u can use this xml object to find xml nodes inside it using jquery...
使用<meta http-equiv="X-UA-Compatible" content="IE=8" />
时我必须使用此方法。在这种情况下,IE9在兼容模式下工作,甚至不允许访问window.frames.<your_frame_name>.document.XMLDocument
,$("#iframeId").contents()
也不起作用。
如果您没有<meta http-equiv="X-UA-Compatible"... />
标记,则可以使用以下代码:
var contents = window.frames.your_frame_name.document.XMLDocument;
var xml = $(contents);
//use this 'xml' object to access its nodes using jquery.
但是,要使上述所有工作正常,您的框架必须指向同一来源或域内的资源。