jQuery没有处理iframe内容

时间:2013-08-22 10:50:21

标签: jquery css iframe input

当我使用jQuery聚焦输入字段时,我正在尝试将css应用于标签,但它似乎不起作用。联系表单将加载到iframe中。如果没有使用iframe,它可以正常工作 - 检查这个jsfiddle:http://jsfiddle.net/nN3w2/(如果iframe没有加载服务器可能会关闭 - 但代码是你可以看到的)。

iframe和联系表单位于同一个域中。联系表格包含在我的网站上使用php。

<script type="text/javascript">
jQuery(document).ready(function($) {
    $("#iframe").contents().find("input").focus(function() {
        $("#iframe").contents().find("label").css('opacity','0');
    });
});
</script>

非iframe

<script type="text/javascript">
jQuery(document).ready(function($) {
    $("input").focus(function() {
       $("label").css('opacity','0');
    });

    $("input").focusout(function() {
         if($("input").val() ==="" ) {
           $("label").css('opacity','1');
        }
    });

});
</script>

1 个答案:

答案 0 :(得分:2)

不可能

您无法将jQuery应用于其他域iframe。它因安全性而被阻止。

扩展“不可能”......

Same origin policies”适用:您与来自另一个[域|子域|协议|端口]的iframe内容进行通信的唯一方法是通过postMessage API,这当然需要其他部分(iframe中的文档)来收听你的消息。

OP评论后更新

也许你可以做这样的事情

$('#iframeOne', window.parent.document);

另一种方法

window.parent.$("#iframeOne");

另一种方式

$("#iframeOne", top.document);

如果您知道父窗口的名称,也可以

$("#iframeOne",opener.document)

此处opener是窗口的名称。