在iframe中运行javascript以及正常内容?

时间:2012-11-05 09:55:53

标签: jquery iframe input

我有以下代码块,当你点击它们时清除输入字段:

$('.clearinputtext').focus(function(){
    if($(this)[0].defaultValue==$(this).val()) $(this).val('');
});
$('.clearinputtext').blur(function(){
    if($(this).val()=='') $(this).val($(this)[0].defaultValue);
});

我也需要在iframe中运行,是否可能?

修改:我忘了提到iframe是使用灯箱动态加载的,所以当页面加载时它就不存在。

解决方案

我设法解决了这个问题。可能不是最好的解决方案,但它现在会做。由于iframe在点击链接时加载了灯箱,因此当页面加载时它不存在,所以我需要在添加iframe后运行iframe的代码。我通过使用灯箱的afterShow事件处理程序来做到这一点。

以下是相关代码:

afterShow: function() {
    // First get html content of iframe
    var content = $('.fancybox-inner iframe').contents().find('html');
    //Then just apply same code to the iframe
    $(content).find('.clearinputtext').focus(function(){
        if($(this)[0].defaultValue==$(this).val()) $(this).val('');
    });
    $(content).find('.clearinputtext').blur(function(){
        if($(this).val()=='') $(this).val($(this)[0].defaultValue);
    });
}

1 个答案:

答案 0 :(得分:1)

var iframe = document.getElementsByTagName('iframe');
innerDoc = iframe[0].contentWindow;

$(innerDoc.document.getElementsByClassName('clearinputtxet')).focus(function(){
if($(this)[0].defaultValue==$(this).val()) $(this).val('');
});

$(innerDoc.document.getElementsByClassName('clearinputtxet')).blur(function(){
    if($(this).val()=='') $(this).val($(this)[0].defaultValue);
});

尝试一下它应该有用。