如果我们有一个带有已定义页面的iframe,则该域将由iframe继承,然后您可以从父框架修改iframe内容,而不会出现任何跨域/域问题。但是,如果您的iframe源中没有已定义的页面,会发生什么?
<iframe id='myFrame' />
var src = 'data:text/html;charset=utf-8,' + encodeURIComponent(
"<!doctype html><html><head></head><body><h1>Title</h1></body></html>");
$('#myFrame').attr('src', src);
此时如果我尝试使用类似的东西:
$('#myFrame').contents().find('html').html('new template');
...我收到域错误消息。
有没有办法将父域传递给iframe?
我不想使用 postMessage / receiveMessage 通讯。
答案 0 :(得分:1)
将iframe的src设置为数据网址后,chrome(以及其他人)将开始将其视为交叉来源。
诀窍是不设置src。
var source = "<!doctype html><html><head></head><body><h1>Title</h1></body></html>";
$('#myFrame').contents().find('html').html(source);
$('#myFrame').contents().find('html').html('<body>Hi2</body>');