2013-04-10 58 views
3

我有一個Greasemonkey函數,可以在瀏覽器訪問的每個網站上創建一個按鈕。如何防止在子窗口中執行Greasemonkey函數?

我想阻止訪問網站的主窗口的所有子窗口中發生這種情況。 (現在按鈕顯示在子窗口上,如adsense窗口或論壇中的輸入textareas,當我在一個網站上時,我可以看到它幾次)。

如何限制此功能到網站的主窗口?

回答

4

這些「子窗口」是 s。
見類似的問題:


Greasemonkey會在I幀運行,就好像他們是主要的頁面 - 如果IFRAME比賽@include,@exclude@match directiv你的劇本。

爲了解決這個子窗口/ iframe的問題:

  1. 調整你的@include, @exclude rules,和/或你的@match directives消除許多不想要的I幀,你可以合理。
    儘量避免讓腳本在的每個頁面上運行。如果只需要頂窗操作,則使用the @noframes directive

  2. 要在函數級別控制,對整個腳本,你可以使用如下代碼:

    if (window.top === window.self) { 
        // CODE TO RUN ON MAIN PAGE 
    } 
    else { 
        // CODE TO RUN IN IFRAME 
    } 
    
+0

謝謝,這正是我正在尋找。 – 2013-04-16 16:48:46

+0

有人可以請upvote這一個硬,我現在沒有足夠的分數。當我贏得更多積分時,我會加倍努力 – 2013-04-23 18:00:34

+0

不客氣;樂意效勞。 – 2013-04-23 20:01:51