2011-04-30 119 views
2

有一個網頁我正在製作一個greasmonkey腳本。該頁面有幾個iframe。我發現他們是問題,但我不知道如何解決這個問題。如何解決「權限被拒絕訪問屬性'提醒'」?

首先,我的腳本用按鈕創建一個小的div框。通過按下腳本分析網頁內容並在特定條件下致電alert。在Firefox

的Javascript控制檯已經喊,我認爲訪問是因爲我的劇本是用document.getElementByID找到頂部文檔的屍體,其中DIV盒子被添加到拒絕document

這是一個很容易避免的問題,因爲腳本失敗並陷入iframe中,但它仍然繼續在主頁上,因爲它可以訪問document

當我嘗試在我的函數中使用警報時,問題出現了。好像iframes接管我的腳本並用Permission denied to access property 'alert'殺死它。

我如何告訴瀏覽器/腳本或其他什麼,我只希望我的腳本在主文檔上運行,而且我不想被iframe困擾?我安裝了NO-script插件,允許主域名並阻止二級域(加載內部框架)和所有警報消息都正常。但是,我不能要求我的用戶安裝noscript啓用/禁用特定的域,我的腳本應該工作正常。我需要找到適用於所有啓用的iframe的解決方案。

希望它沒有聽起來令人困惑。

謝謝你的幫助。

+0

有些代碼會有幫助 – user123444555621 2011-04-30 11:25:41

回答

5

RE:

我如何告訴瀏覽器/腳本或什麼的,我只希望我的腳本在主文檔運行,我不想通過I幀來打擾我沒有安裝腳本插件? ,允許主域名並阻止二級域名(在內部框架中加載)並且所有警報消息都正常。

首先,調整您的include和exclude指令,以儘可能忽略iframe。 EG:

// @include http://example.com/normal/* 
// @include http://example.com/extra/* 
// @exclude http://example.com/extra/in_iframe/* 


接下來,添加這兩條線爲第一行代碼的Metadata Block後:

if (window.top != window.self) //-- Don't run on frames or iframes 
    return; 

將從I幀上停止運行的通用腳本。

+1

謝謝,足以添加2行代碼,它都運行良好:) – user1651105 2011-05-02 09:20:10

+0

不客氣,樂意效勞。 – 2011-05-02 09:21:47

相關問題