实现方案2:window.postMessage方法
由于方案1中对ie兼容性有问题(所有ie版本,包括ie11和edge都存在这个问题),方案2使用postMessage方法,该方法理论上对数据量没有限制(猜的),并且对ie可用
同样是使用iframe嵌入,
parent.html[C#] 纯文本查看 复制代码 var iframe = document.getElementById("childFrame").contentWindow;
var msg = {data:parentData,action:childFunc,callback:/*类似于上面的方法myEventIndex*/}
var childDomain = "http://www.SUFEINET.COM"
iframe.postMessage(msg,childDomain);
[C#] 纯文本查看 复制代码 window.addEventListener("message",function(obj){
var data = obj.data;
var action = data.action;
var data = data.data;
parentFuncClass[action](data);
});
1
<br>
child.html[C#] 纯文本查看 复制代码 window.addEventListener("message",function(obj){
var data = obj.data;
var action = data.action;
var data = data.data;
var callback = data.callback;
childFuncClass[action](data,function(result){
var d = {action:callback,data:result};
var parentDomain="http://www.SUFEINET.COM";
window.parent.postMessage(d,parentDomain);
});
});
真的是坑啊,把方案1中的坑都走过后才找到方案2的方法
|