我创建了一个简单的greasemonkey脚本,它在页面上附加了新菜单,点击它会显示iframe,我想确保当我点击菜单时iframe已经完全加载,所以我创建了这个
$('<div id="googleBar"><iframe id="googleBarFrame" scrolling="no" frameborder="0" src="http://support.google.com/plus/bin/answer.py?hl=en&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;
}
});
答案 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中的事件,所以它也可以用于加载事件。