我想在iframe窗口中触发某些操作时以某种方式获取iframe内容。 iframe中的所有内容均来自其他网站。 iframe中有一个文本框和一个按钮,我想检测内容何时更新,如果iframe中有特定内容,那么我需要执行一些操作。 目前我所拥有的是:
<script type="text/javascript">
$(document).ready(function() {
var timesRefreshed = 0;
$('#frame').load(function () {
if (timesRefreshed == 1) {
var data = {
transactionID : '@Model.OrderId'
};
$.ajax({
type: "POST",
url: '@Url.Action("ConfirmationStep", "Cart")',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data),
dataType: "json",
success: function(result) {
}
});
}
timesRefreshed++;
if (timesRefreshed == 2) {
window.location.href = '/Home/PaymentComplete/';
}
});
});
</script>
使用这种方法并没有给我很多选项,只是简单地检查iframe加载了多少次,但是例如,如果用户输入了错误的数据,iframe可能会被加载,但会显示消息说明值是不正确的。
现在,这段代码将看到timesRefreshed等于2,它将重定向到另一个视图。我想查看iframe的实际内容。我检查了innerHTML属性,但它很可能是空的,因为iframe正在托管来自其他网站的内容。
答案 0 :(得分:5)
jQuery postMessage在支持它的浏览器(FF3,Safari 4,IE8)中启用简单易用的window.postMessage通信,同时回退到所有其他浏览器的document.location.hash通信方法(IE6,IE7) ,Opera)。
通过添加window.postMessage method,JavaScript最终具有跨域框架通信的绝佳方式。不幸的是,并非所有浏览器都支持此方法。