I've seen different methods for posting data to an iframe but I can't find one where I can just send a JSON object. All the methods seem to require me to use form elements to put my data in.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Take a look at postMessage and use JSON.stringify for your message and JSON.parse in the event handler.
To actually post to a iframe you have to do
myIframe.contentWindow.postMessage(...)
fiddle
html
<button onclick="_sendMessage ()">Send</button>
<iframe src="" id="myIframe">
javascript
var myIframe = document.getElementById('myIframe');
myIframe.contentWindow.addEventListener('message', function(event) {
console.log(JSON.parse(event.data));
}, false);
window._sendMessage = function() {
var json = {payload:'Hello World'};
myIframe.contentWindow.postMessage(JSON.stringify(json), '*');
}
回答2:
You can use the Porthole JS library. It describes itself as a "JavaScript Library for Secure Cross Domain iFrame Communication".
It uses postMessage()
if available, but reverts to a "hidden proxy" workaround for browsers that don't.