如果没有.html源代码,如何在iframe中保留域名?

时间:2018-03-13 16:27:02

标签: javascript iframe cross-domain

如果我们有一个带有已定义页面的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 通讯。

1 个答案:

答案 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>');