1

有没有办法使用 jQuery 让 iframe 在点击时加载,我想要这个,因为 iframe 隐藏在一个 div 中,直到点击才可见,所以绝大多数用户不会查看 iframe,并且我不希望加载时间受到 iframe 的影响。

这是我尝试过的少数几件事之一,iframe 不加载:

$(function() {
var emba=1;
var embget = 1;
    $(".custemba").click(function(event) {
    event.preventDefault(event);
    if(emba == 1) {
        emba = 2;
        $('.custemb').slideDown();
        if(embget == 2) {
            $('.appendi').append('<iframe src="/player_i.php?aid=12" height="170px" width="100%" scrolling="no"  frameborder="0"></iframe>');
            embget = 2;
        }
    }
    else if(emba == 2) {
        emba = 1;
        $('.custemb').slideUp();
    }
    });
});
4

2 回答 2

1

好像

如果(嵌入 == 2)

应该

如果(嵌入 == 1)

而且你不需要那个额外的事件

event.preventDefault();

这是一个简化版本:

var appendIFrame = true;
$(".custemba").click(function(event) {
    event.preventDefault();
    $('.custemb').slideToggle();
    if(appendIFrame) {
        $('.appendi').append('<iframe src="/player_i.php?aid=12" height="170px" width="100%" scrolling="no"  frameborder="0"></iframe>');
        appendIFrame = false;
    }
});
于 2012-05-15T00:06:32.470 回答
1

以下对我有用,有点清洁,在附加之前创建对象:

HTML:

<div>
    <a href="#" class="showframe">Show iFrame</a>
</div>
<div class="framebox"></div>​

JS:

var frame_loaded = false;
$(".showframe").click(function(event) {
    event.preventDefault();
    if (frame_loaded === false) {
        var frame_element = $('<iframe>');
        frame_element.attr({
            src: "http://eatabagofdicks.com",
            height: "170px",
            width: "100%",
            scrolling: "no",
            frameborder: "0"
        });
        $(".framebox").append(frame_element);
        frame_loaded = true;
    }
    $(".framebox").slideToggle();
});​
于 2012-05-15T00:51:49.087 回答