【问题标题】:Javascript compatibility issues (code works in FF but not in Opera and Chrome)Javascript 兼容性问题(代码在 FF 中有效,但在 Opera 和 Chrome 中无效)
【发布时间】:2014-03-04 17:39:36
【问题描述】:

我有一段 Javascript 代码如下...

var btnOK = document.getElementById('btnOK');
btnOK.style.visibility = "visible";
var iframeControlObj = document.getElementById('iframe');
this.style.visibility = "hidden";
var file_xml = iframeControlObj.contentDocument.getElementById('hiddenxml');
file_xml.value = xml_value;
iframeControlObj.contentWindow.location.reload();

说明

我有一个 iframe,其中有一个控件“hiddenxml”。我想将数据从当前网页发送到 iframe。因此,我将值初始化为“hiddenxml”并重新加载 iframe。

问题

在 Firefox 中,我可以通过“hiddenxml”获取“xml_value”,但在 Chrome 和 Opera 中,我无法获取此信息。

请告诉我为什么会这样。如果这是一个垃圾方法,请随时提供更好的方法并改进它。非常感谢..

PS:xml_value 可以很大,大约 3-4 MB。 xml_value 是字符串而不是 DOM 对象

【问题讨论】:

  • 当你重新加载 iframe 时,它​​会刷新服务器上的所有内容,并且你对 DOM 所做的任何修改都会丢失。
  • 有什么解决办法??如何将当前页面的信息发送到 iframe 中??
  • 按其他顺序执行:重新加载帧,然后发送数据。
  • 实际上,IFrame 中有一段 Javascript 代码,在重新加载时会自动执行。我编写的这个函数对“hiddenxml”执行操作。因此,重新加载 -> 分配数据年表对我不起作用。

标签: javascript iframe cross-browser


【解决方案1】:

如果你想在你的页面和 iframe 之间交换数据,你可以使用

window.postMessage

关于这方面的 Mozilla 文档非常好:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

也许这会对你有所帮助。

【讨论】:

  • window.postMessage 通过 URL 发送值。正如我已经提到的,xml_value 非常大,所以我不能通过 URL 发送那个巨大的值。不过感谢您的回复。
猜你喜欢
  • 2013-01-16
  • 2013-10-30
  • 2011-02-22
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多