从内部赋予iframe属性
Giving iframe properties from inside
因此,我目前正在开发一个应用程序,该应用程序在其自己的iframe内运行在客户页面的顶部。
Application在主干中工作,除了iframe的初始化之外,其他一切都在iframe中完成。初始化发生在一个小的javascript片段,客户端将复制到他们的页脚。
我目前的问题是,我必须注入一个CSS文件到父站点,以便样式我的iframe正确呈现时,我真的不认为我应该篡改客户端页面,因为CSS可能有一些冲突在它。
是否有更好的方式来样式的iframe比目前的方式做它?
我认为你有两个不同的选择;
内联iframe样式
给你的客户端一个预样式的iframe来嵌入,像这样
<iframe src="yoururl.com/client"
frameborder="0"
style="border: 0; width: 100%; height: 600px;">
</iframe>
嵌入到脚本标签
创建一个小的脚本标签(由您托管),然后交给您的客户端。在脚本中动态地创建iframe dom元素和可能需要的其他外部css文件
托管一个JS文件,如//yoururl.com/iframe.js
var iframe = document.createElement("iframe");
iframe.setAttribute("src","http://yoururl.com/client");
document.write("<div id='mycontainer'></div>");
document.getElementById("mycontainer").appendChild(iframe);
然后你可以把这个给你的客户端放在他们的页面,他们想要的iframe显示。
<script src="//yoururl.com/iframe.js" type="text/javascript"></script>
你可以单独提供你的css给客户端。如果这不是一个选项,那么您需要按照您现在所做的方式来做(从iframe中注入父样式)。然而,这似乎不是一个好主意,除非你的css规则非常独特。
有很多方法,但有可能没有一个是适用的:
- 请求客户端为iframe设置样式(内联或css)
- 将框架内容发布到主站的同一域,并检查父框架是否可以通过javascript访问
- 请求客户端启用报头"X-Frame-Options"。也许是像"ALLOW-FROM sameddomain, www.youriframedomain.com"这样的东西。它似乎被弃用了,请检查Content-Security-Policy。
- 通过script标签嵌入
- 检查窗口。postMessage:无论如何,它需要一个额外的脚本在主网站监听消息(它可能是css文本本身)从iframe和应用新的样式
您应该能够使用window.frameElement
来引用您的页面嵌入的iframe元素。有了这个引用,您应该能够修改style属性来改变框架的呈现方式。
相关文章:
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- 附加'沙箱'属性设置为动态创建的iframe以停止重定向
- 更改多个 iframe 中的文本框属性
- 如何在 iframe 中创建 HTML5 数据属性
- 单击没有 src 属性的 iframe 中的元素
- 取消 iframe 中具有 target=“_parent” 属性的链接事件
- 为什么当我尝试为iframe-src属性构建URL时,AngularJS会抛出错误
- Displaynone属性停止在Firefox中播放youtube iframe
- 占位符属性嵌入IE中的iframe时不起作用
- 可以't使用iframe获取占位符属性以在IE中工作
- 如何获得"src”;来自多个嵌套iframe源的属性
- 使用 jquery 更改 iframe 属性
- 如何通过Javascript获取iframe属性
- 跨域获取iframe javascript内部的iframe属性
- Iframe属性onload被调用多次
- 从内部赋予iframe属性
- 从特定iframe本身中呈现的文档设置iframe属性
- 从JQuery创建iframe -属性不工作,为什么不呢?
- 从iframe中获取iframe属性的值
- 如何通过JQuery添加不会验证为HTML5的iFrame属性