2011-05-18 12 views
1

我有一個與我的GM用戶腳本相關的新問題。爲交叉表通信修改GM_setValue和GM_getValue:如何訪問Firefox首選項變量?

該腳本的目的是從外部域中檢索數據。我在Firefox上的第一次嘗試讓我設計了一個頁面,我的表單被填充並且嵌入了外部頁面。通過使用setInterval並識別它是頂部窗口還是我們在iframe中,我成功使用了GM_setValue和GM_getValue來獲取數據。

但IE(IE7PRO)發現我能夠將我的腳本分成兩個腳本:一個只處理表單,另一個處理外部域。 IE7PRO提供可在產品的任何選項卡/頁面上檢索的等效功能(PRO_getValue和PRO_setValue)。唯一的區別是它工作在交叉表/頁面,所以我不必在自己的頁面上包含iframe,並且我可以爲外部域打開自己的標籤,這個標籤大約好一百萬倍(至少。 ..)!

我在Firefox上嘗試過,它顯然沒有工作。我已經通過了​​,而且在Firefox中,數據存儲在首選項(about:config to access)中。

那麼,有沒有一種方法,我可以修改GM_getValue,添加它的參數,因爲值存儲有這位模特:greasemonkey.scriptvals.namespace/script_name.value_name

是否有使用Firefox瀏覽偏好的價值的一種方式,在Greasemonkey的用戶腳本/在Javascript和什麼是語法?

感謝;-)

+3

也許你可以使用一個GM腳本,在兩個頁面上運行一個大的if語句,根據url決定腳本的哪一部分運行。 – wimh 2011-05-18 20:03:44

回答

4

如果我正確理解你的問題,你幾乎可以做同樣的事情,你已經在IE中做了:每個標籤中都有一個腳本運行。

GM_[gs]etValue工作交叉表和跨頁面。值存儲在每個用戶腳本

因此,所有你需要做的是在兩個標籤相同 userscript運行,並簡單地把它做的基礎上進行檢查,window.location.href不同的事情。

+1

完美地工作,感謝您的幫助。 – 2011-05-19 09:06:55

1

目前,唯一的辦法是使這兩個網頁上運行一個腳本。
您可以通過添加如Wimmel前面提到的if語句來區分它們。

但是,您可能會考慮使用unsafeWindow將代碼添加到全局作用域中,並將代碼分隔成2個腳本,但是執行這兩個腳本的順序都會影響結果。

相關問題