我有一个iFrame
,其中有一个按钮,单击该按钮会将iframe扩展到其内容的高度。现在,必须在按钮的颜色,边框颜色和文本颜色上对其进行自定义。我考虑过使用iFrame属性发送所需的数据(在这种情况下为颜色),但是我看不到这样做的方法。我正在尝试的一种变通办法是在iframe
的名称中设置此信息并进行解析,但这似乎不是最佳方法。
最佳答案
IFRAME名称绝对不是一个很好的解决方案。您可以至少使用数据属性。
我敢肯定有很多方法可以做到这一点。如果颜色是动态变化的,那么有一种交流的方式就很重要。如果不是动态的,您还可以在IFRAME URL中将它们定义为查询字符串参数,并直接在服务器上使用这些颜色来定义相应的脚本,包括一开始就使用的颜色(尽管这意味着您的数据会根据颜色而变化。 )
从使用jQuery并在IFRAME中定义的脚本中,可以使用window.frameElement访问IFRAME标记。所以,我会写这样的东西:
var f = window.frameElement;
if(f)
{
var c, bc, tc;
c = jQuery(f).data("color");
bc = jQuery(f).data("border-color");
tc = jQuery(f).data("text-color");
}
现在,
c
,bc
和tc
变量具有您的颜色。请注意,我测试
f
以确保它存在。如果您当前的窗口未在IFRAME中定义,则f == null
并且您可能希望以某种方式处理该特殊情况,就像上面的示例中那样忽略它。相应的HTML如下所示:
<iframe id="my-iframe"
data-color="#112233"
data-border-color="#aabbcc"
data-text-color="#666666"
...>
</iframe>
如果要从父窗口访问IFRAME,则可以使用其
id
属性:var iframe = jQuery("id");
c = iframe.data("color");
[...]