2013-03-23 18 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查询功能搜索?

但是我没有办法解决。

尼克