我想使用Jquery或javascript来获取Iframe的原始内容(平均每个字符)。这听起来很简单,但我仍在努力寻找正确的方法。
现在它只是Iframe中的XML内容。 代码如下:
$(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>
谢谢,
答案 0 :(得分:1)
免责声明:我会回答您的问题,无论它是否真的是您问题的优雅解决方案。约瑟夫似乎把这当作问题。我会说他可能是这样做的。
尝试使用mimetype text / xml获取框架是行不通的。浏览器将继续并将XML“翻译”为HTML。这就是为什么听起来不那么简单。这种方式实际上是不可能的。
我为您提供了解决此问题的简单方法。
<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>
XML的内容包含在HTML(helloworld.html)中:
<html>
<body>
<script id="xmlContainer" type="text/xml">
<?xml version="1.0" encoding="UTF-8"?>
<title>
Hello world
</title>
</script>
</body>
</html>
我已经在Chrome,Firefox和IE中成功测试了这个。
当然,如上所示,您必须将XML文档包装在HTML脚本标记内。如果你想要渲染XML,也可以将XML包装在不同的标记中,但是你必须使用html编码对XML进行编码。这需要在服务器端完成。一个非常简单的(php / ruby / python / etc)脚本就足够了。
答案 1 :(得分:0)
如果您的XML位于您的域中,那么您最好使用AJAX,尤其是使用jQuery library,它会为您解析它并为即时操作做好准备。
如果它不在您的域中,那么you can't access it via AJAX除非远程server and your client's browser both support CORS.
你有选择: