我有一个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");
}


现在,cbctc变量具有您的颜色。

请注意,我测试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");
[...]

10-05 20:57
查看更多