如果您使用@include *
創建Greasemonkey腳本並轉到諸如youtube之類的站點,則每次刷新時都會運行腳本20次以上。這是在Firefox上,不知道關於Chrome。
有沒有辦法來防止這種情況?每頁加載只運行一次Greasemonkey腳本?
21
A
回答
35
首先,您可能不希望腳本在iFrame中運行。
您可以阻止使用the @noframes
directive現在工作在兩個的Greasemonkey和Tampermonkey截至10月,2014年
對於舊版本,或腳本引擎不支持@noframes
,您可以使用此代碼,剛過元數據塊:
if (window.top != window.self) //don't run on frames or iframes
{
//Optional: GM_log ('In frame');
return;
}
其次,你可以等待,解僱你的GM碼,有一次,在頁面加載。在main()
總結一切,並調用它的load
事件,像這樣:
window.addEventListener ("load", LocalMain, false);
function LocalMain() {
// Your code goes here.
}
第三,你可以通過添加// @exclude
指令的元數據塊排除網站或網頁。
總體而言,如果可能的話,最好避免使用通用的GM腳本。
其他方法可能會設置標誌或使用URL參數重新加載頁面。這些變得棘手,因此將它們保存爲最後的手段。
0
例如,您可以將給定的位置存儲在持久變量中。 在頁面加載時,如果當前位置已存儲在此變量中,您必須檢查。
如果沒有,則設置該變量並運行您的函數,如果是,則不執行任何操作。
如何存儲持久性變量:GM_setValue
相關問題
- 1. 如何只運行一次Greasemonkey腳本
- 2. 的Greasemonkey腳本閃光一次,每次載入網頁
- 3. Greasemonkey腳本只能用CTRL + F5加載?
- 4. 如何製作一個每頁加載運行一次的SSL轉發腳本
- 5. 變量加1,每次運行腳本
- 6. 在第一次運行Greasemonkey腳本時執行函數
- 7. 運行腳本牽強只有一次
- 8. 我的腳本只運行一次
- 9. 每分鐘運行一次PHP腳本
- 10. 如何讓PHP腳本每天只運行一次?
- 11. 爲什麼我的函數只在每頁加載時運行一次?
- 12. jquery每次只運行一次
- 13. 在頁面加載中爲每個div運行jQuery腳本
- 14. 第二次加載頁面時應該運行腳本
- 15. 只運行CSS3動畫一次(在頁面加載時)
- 16. 如何確保一次腳本只運行一次
- 17. PHP運行AJAX腳本只能運行一次
- 18. 在另一個GM腳本加載後加載我的Greasemonkey腳本
- 19. 爲什麼jQuery在我的GreaseMonkey腳本中加載兩次因爲某種原因,我的Firefox4 + GreaseMonkey腳本加載jQuery兩次,我的GreaseMonkey Script
- 20. 運行PHP腳本加載
- 21. 用GreaseMonkey停止緩慢加載腳本
- 22. 如何每次運行內容腳本
- 23. 只有一個JS腳本在頁面加載執行
- 24. 如何運行AJAX網頁加載腳本加載
- 25. Greasemonkey腳本,刷新頁面
- 26. 運行每秒運行一次只在碎片運行一次onCreateView()
- 27. 如何在頁面內容顯示之前運行greasemonkey腳本?
- 28. Jquery鏈接效果只能在每頁加載一次?
- 29. 它有一種方法來重新加載一個greasemonkey腳本?
- 30. 每隔一週運行一次Google腳本
只是檢查YouTube上,有少得多的I幀。我的建議是'GM_log(location.href)'和狹窄的@include。 – 2010-11-16 02:17:42
這解決了我的問題。謝謝! – Joren 2010-11-16 02:33:23
@Joren:不客氣。樂意效勞。 – 2010-11-16 02:41:12