关于jquery和iframe的一些修正?

时间:2012-01-15 01:05:00

标签: jquery iframe greasemonkey

我创建了一个简单的greasemonkey脚本,它在页面上附加了新菜单,点击它会显示iframe,我想确保当我点击菜单时iframe已经完全加载,所以我创建了这个

$('<div id="googleBar"><iframe id="googleBarFrame" scrolling="no" frameborder="0" src="http://support.google.com/plus/bin/answer.py?hl=en&amp;answer=1053549"></iframe></div>').insertBefore('#pagelet_welcome_box');

$('#googleBarFrame').load(function() 
{
    $('#pageNav').prepend('<li id="navShare" class="topNavLink middleLink"><a accesskey="1" >Google+ Share</a></li>');
});

//This not working
var toggle = false;
$('#navShare').click(function() {
    if (toggle) {
        $("#googleBar").animate({
        height: '30px',
        }, 500 );
    toggle = false;
    }
    else {
        $("#googleBar").animate({
        height: '250px',
        }, 500 );
    toggle = true;
    }
});

但这不起作用,这是我的工作脚本,但无法检测iframe已加载

$('#pageNav').prepend('<li id="navShare" class="topNavLink middleLink"><a accesskey="1" >Google+ Share</a></li>');

$('<div id="googleBar"><iframe id="googleBarFrame" scrolling="no" frameborder="0" src="http://support.google.com/plus/bin/answer.py"></iframe></div>').insertBefore('#pagelet_welcome_box');

var toggle = false;
$('#navShare').click(function() {
    if (toggle) {
        $("#googleBar").animate({
        height: '30px',
        }, 500 );
    toggle = false;
    }
    else {
        $("#googleBar").animate({
        height: '250px',
        }, 500 );
    toggle = true;
    }
});

1 个答案:

答案 0 :(得分:0)

嗯......在greasemonkey中处理事件并不容易。如果你想将回调绑定到iframe的load事件,你应该尝试类似的东西

function callback() {
    $('#pageNav').prepend('<li id="navShare" class="topNavLink middleLink"><a accesskey="1" >Google+ Share</a></li>');
}
document.getElementById('googleBarFrame').addEventListener('load', callback, false);

我没有测试过,所以它可能因为愚蠢的事情而无法工作(例如我不确定是否传入了事件名称&#34; addEventListener&#34;是&#39; load&# 39;或&#39; onload&#39;)。

这个方法(addEventListener)为我工作了&#34;点击&#34;在greasemonkey中的事件,所以它也可以用于加载事件。