2012-01-15 24 views
1

我創建了一個簡單的Greasemonkey腳本,它附着在頁面上新的菜單,點擊時會顯示的iframe,我想確保當我點擊了iframe早已滿載菜單,所以我創造了這個關於jquery和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; 
    } 
}); 

回答

0

嗯...在Greasemonkey的事件處理是不容易的。如果你要綁定回調iframe的負載情況下,你應該嘗試類似的東西

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

我沒有測試,因此它可能不會becouse的一些愚蠢的工作(例如我不知道,如果在「addEventListener」中傳遞的事件名是'load'或'onload')。

這個方法(addEventListener)爲我在greasemonkey中的「click」事件工作,所以它也可以用於加載事件。

+0

感謝您的回答,我嘗試這兩個.... addEventListener('加載',...和.... addEventListener('onload',...和兩個不工作。 – nyongrand 2012-01-15 08:05:12

+0

嗯...確保在DOM中創建googleBarFrame並加載之前調用addEventListener – Fisher 2012-01-19 20:53:01