Javascript 获取Iframe的原始内容
我想使用Jquery或javascript获取Iframe的原始内容(平均每个字符)。这听起来很简单,但我仍在努力寻找正确的方法 但目前它只是Iframe中的一个XML内容。 代码如下:Javascript 获取Iframe的原始内容,javascript,jquery,html,xml,iframe,Javascript,Jquery,Html,Xml,Iframe,我想使用Jquery或javascript获取Iframe的原始内容(平均每个字符)。这听起来很简单,但我仍在努力寻找正确的方法 但目前它只是Iframe中的一个XML内容。 代码如下: $(function() { var xmlContent = $("#CFrame").contents().find("*").text(); // The magic $('#SResult').xslt({xml: xmlContent, xslUrl: 'styleshee
$(function() {
var xmlContent = $("#CFrame").contents().find("*").text();
// The magic
$('#SResult').xslt({xml: xmlContent, xslUrl: 'stylesheet/designSS.xsl'});
});
html页面
<form id="searchForm" method="GET" target="ContentFrame" action="http://125.235.8.210:380/search" onSubmit="processContent()">
.....
</form>
</div>
<div id="SResult">
</div>
<iframe id="CFrame" name="ContentFrame" frameborder="1" height="2000px" width="1000px" scrolling="no" src="stylesheet/test.xml"></iframe>
</body>
.....
谢谢,如果您的XML驻留在您的域中,您最好使用AJAX,尤其是使用,它可以为您解析XML并为即时操作做好准备 如果它不在您的域中,则除非 不过,您可以选择:
- 如果远程服务器的API支持JSONP,请使用它而不是XML。然后,您可以使用jQuery检索JSONP数据或滚动您自己的脚本加载器
- 或者使用服务器为您代理XML。服务器不限于同一源策略。在服务器上创建一个API,将表单数据中继到远程服务器并检索远程页面—所有这些都与服务器是浏览器一样。然后将结果转发给您
<html>
<head>
<script>
function getXmlContents() {
/*
Note: Because of security reasons, the contents of a document can be accessed from another document only if the two documents are located in the same domain.
http://www.w3schools.com/jsref/prop_frame_contentdocument.asp
*/
var iframeDocument = document.getElementById('greetingFrame').contentDocument;
if (iframeDocument == null)
return undefined;
var xmlContainer = iframeDocument.getElementById('xmlContainer');
if (xmlContainer == null)
return undefined;
return xmlContainer.innerText == null ? xmlContainer.textContent : xmlContainer.innerText;
};
</script>
</head>
<body>
<iframe id="greetingFrame" src="helloworld.html" onload="alert(getXmlContents())">
</iframe>
</body>
</html>
函数getXmlContents(){
/*
注意:由于安全原因,只有当两个文档位于同一域中时,才能从另一个文档访问文档的内容。
http://www.w3schools.com/jsref/prop_frame_contentdocument.asp
*/
var iframeDocument=document.getElementById('greetingFrame').contentDocument;
if(iframeDocument==null)
返回未定义;
var xmlContainer=iframeDocument.getElementById('xmlContainer');
if(xmlContainer==null)
返回未定义;
返回xmlContainer.innerText==null?xmlContainer.textContent:xmlContainer.innerText;
};
XML的内容被包装在一个HTML(helloworld.HTML)中:
你好,世界
我已经在Chrome、Firefox和IE中成功地测试了这一点
当然,您必须将XML文档包装在HTML脚本标记中,如上所述。例如,如果您希望呈现XML,也可以将XML包装在不同的标记中,但必须使用html编码对XML进行编码。这需要在服务器端完成。一个非常简单的(php/ruby/python/etc)脚本就足够了 您的iframe是指向存储在域中的内容,还是指向某个远程网站?另外,为什么要将XML文档加载到iframe中?有一个表单(发送到远程应用程序)以该iframe为目标,表单的返回内容应该是XML。然后,我将使用一个样式表将这个xml转换为包含在主页div中的html。不支持JSONP,在服务器端进行更改也是不可能的。是否有一种方法可以将表单目标设置为div或Iframe以外的其他内容。这可能有助于避免跨域规则?@MikeNQ JSONP通常是解决方法。除此之外,你就不走运了。服务器代理最适合此作业。
<html>
<body>
<script id="xmlContainer" type="text/xml">
<?xml version="1.0" encoding="UTF-8"?>
<title>
Hello world
</title>
</script>
</body>
</html>