更新iframe中的父javascript对象,并在父对象中获取iframe中更新的值
我有一个带iframe的文档更新iframe中的父javascript对象,并在父对象中获取iframe中更新的值,javascript,jquery,iframe,Javascript,Jquery,Iframe,我有一个带iframe的文档 <body> <script> globalObj = {}; globalObj.myname = 'sachin'; globalObj.age = '25'; </script> <form name="PrePage" method = "post" action = "https://scotest.authorize.net/payment/CatalogPayment.aspx"> &
<body>
<script>
globalObj = {};
globalObj.myname = 'sachin';
globalObj.age = '25';
</script>
<form name="PrePage" method = "post" action = "https://scotest.authorize.net/payment/CatalogPayment.aspx">
<input type = "hidden" name = "LinkId" value ="ae7263c8-b030-4ca8-9a98-f64308bb2a8e" />
<input type = "image" src ="//testcontent.authorize.net/images/donate-gold.gif" />
</form>
<script type="text/javascript">
console.log('firts====>');console.log(globalObj);
</script>
<iframe src="iframe.html">
</iframe>
<script type="text/javascript">
console.log('2nd----->');console.log(globalObj);
</script>
globalObj={};
globalObj.myname='sachin';
globalObj.age='25';
log('firts==>');console.log(globalObj);
console.log('2nd----->');console.log(globalObj);
iframe.html
<html>
<head>
</head>
<body>
<script type="text/javascript">
//console.log(parent.globalObj);
//alert('testts-->'+parent.myVar);
parent.globalObj.myname = 'vikas';
console.log('updated---->');console.log(parent.globalObj);
</script>
</body>
</html>
//console.log(parent.globalObj);
//警报('testts-->'+parent.myVar);
parent.globalObj.myname='vikas';
console.log('updated-->');console.log(parent.globalObj);
我想要实现的是,一旦我更新了globalObj
的iframe中的值,我就想在父文档中得到更新后的值,而不是原始值。
如何实现它。iframe和html页面位于同一个域。在主机页中添加一个函数:
<script>
function updatename(name,age){
globalObj.name=name;
globalObj.age=age;
}
</script>
document.globalObj={myname:'sachin',age:23};
在iframe页面中:
<script>
parent.updatename('vikas',23);
</script>
parent.document.globalObj={myname:'vikas',age:23};
因此,如果我在iframe页面中更新它,并且在主机页面中访问它,它会给我更新的值吗?我的意思是,我希望更新同一个对象,而不是为主机和iframe创建两个不同的对象。这将帮助我更新,但不能解决问题。我仍然会在主机中获取旧值,即使我更新了iframe中的变量,iframe页面也无法读取主机页的变量。这是一个安全考虑,即使它们位于同一个域上。您可以通过使用参数化URL重新加载iframe来传播主机值。因此,您的意思是,一旦我更新iframe中的值,我将无法在主机中获得更新的值?此外,我没有为此获得参数化URL重新加载解决方案。请您详细说明。在主机和iframe页面之间设置全双工通信是很棘手的。在firefox中使用firebug查看是否有任何访问被拒绝的错误。更改是指您的主机变量由iframe正确设置,但没有正确读回。如果iframe有一个id,比如说“ifrm”,则可以执行document.getElementById('ifrm').src=“iframe.php?name=“+name+”&age=“+age;