2013-03-23 11 views
0

Facebook已開始使用「-cx-PRIVATE-」作爲其網站上許多CSS類名的命名前綴。對於其CSS類名稱,Facebook的「-cx-PRIVATE-」前綴是否受Greasemonkey類型userscripts保護?

它似乎是對Greasemonkey類型用戶腳本的某種保護。

當Facebook網頁上的一個以「-cx-PRIVATE-」開頭的類名查詢被禁止時,Facebook可能會攔截對document.getElementsByClassName的調用,並禁止函數返回任何結果?或者另一種可能性是他們可以在查詢被攔截時更改類名,然後在查詢完成後再將其更改回

我問這個問題的原因是在某些情況下,即使我可以在源代碼中看到代碼中有類名以「-cx-PRIVATE-」開頭的元素,但是當我嘗試從userscript中通過javascript選擇它們時,document.getElementsByClassName函數沒有返回任何元素。

有沒有人有任何想法,他們如何做到這一點和任何方式來解決他們的塊?

+0

我沒有看到任何帶有類名的頁面。請鏈接到一個或至少保存一個來源。無可否認,這不會停止Greasemonkey腳本。 – 2013-03-24 01:58:53

+0

它似乎可能是一個跨瀏覽器問題。看起來如果我在chrome中查看源代碼,我看到cx-PRIVATE類,但是如果我在Firefox中查看源代碼,我沒有看到它們。很奇怪。 一個例子是在人字形的底層代碼中,打開「隱藏故事/報告爲垃圾郵件」菜單,當您將鼠標懸停在新聞源中的故事上時將出現該菜單。 – user280109 2013-03-26 23:20:17

回答

0

是的,它很可能覆蓋內置函數。下面是document.getElementsByClassName一個例子:

// Cache the original 
document.______getElementsByClassName = document.getElementsByClassName; 
// Overide the function 
document.getElementsByClassName = function(classes){ 

http://jsfiddle.net/nmiddleweek/fj52f7f8/5/

也許你可以嘗試使用其他的DOM查詢功能搜索?

但是我沒有辦法解決。

尼克

相關問題