我正在对最近接手的网站进行一些优化。我找到了一个我不认识的脚本: http://static.ak.fbcdn.net/rsrc.php/zo/r/V95Lkt_uLNB.js
它可能是一个Facebook的东西,并且有一些关键日志记录正在进行(我不太热衷)
毫无疑问,在页面加载(87kb)上请求的最大文件是如此,如果我没有它,它将真正加快页面加载。
有谁知道:
A)它是什么
B)它的用途是什么
C)它的作用
D)我可以不用它吗
答案 0 :(得分:32)
好的,所以我查看了这个缩小代码的美化版本,并注意到以下内容:
这些本身就是一堆实用功能。
CavalryLogger本身不对此文件做任何事情,因为它不存在,也没有定义。
有关密钥绑定的问题代码:
function KeyEventController() {
copy_properties(this, {
handlers: {}
});
document.onkeyup = this.onkeyevent.bind(this, 'onkeyup');
document.onkeydown = this.onkeyevent.bind(this, 'onkeydown');
document.onkeypress = this.onkeyevent.bind(this, 'onkeypress');
}
copy_properties(KeyEventController, {
instance: null,
getInstance: function () {
return KeyEventController.instance || (KeyEventController.instance = new KeyEventController());
},
defaultFilter: function (event, a) {
event = $E(event);
return KeyEventController.filterEventTypes(event, a) && KeyEventController.filterEventTargets(event, a) && KeyEventController.filterEventModifiers(event, a);
},
filterEventTypes: function (event, a) {
if (a === 'onkeydown') return true;
return false;
},
filterEventTargets: function (event, b) {
var a = $E(event).getTarget();
if (DOM.isNode(a, ['input', 'select', 'textarea', 'object', 'embed'])) if (a.type != 'checkbox' && a.type != 'radio' && a.type != 'submit') return false;
return a.getAttribute('contentEditable') != 'true';
},
filterEventModifiers: function (event, a) {
if (event.ctrlKey || event.altKey || event.metaKey || event.repeat) return false;
return true;
},
registerKey: function (f, a, d, g) {
if (d === undefined) d = KeyEventController.defaultFilter;
var b = KeyEventController.getInstance();
var c = b.mapKey(f);
if (is_empty(b.handlers)) onleaveRegister(b.resetHandlers.bind(b));
for (var e = 0; e < c.length; e++) {
f = c[e];
if (!b.handlers[f] || g) b.handlers[f] = [];
b.handlers[f].push({
callback: a,
filter: d
});
}
},
keyCodeMap: {
'[': [219],
']': [221],
'`': [192],
LEFT: [KEYS.LEFT, 63234],
RIGHT: [KEYS.RIGHT, 63235],
RETURN: [KEYS.RETURN],
TAB: [KEYS.TAB],
DOWN: [KEYS.DOWN, 63233],
UP: [KEYS.UP, 63232],
ESCAPE: [KEYS.ESC],
BACKSPACE: [KEYS.BACKSPACE],
DELETE: [KEYS.DELETE]
}
});
copy_properties(KeyEventController.prototype, {
mapKey: function (a) {
if (typeof (a) == 'number') return [48 + a, 96 + a];
if (KeyEventController.keyCodeMap[a.toUpperCase()]) return KeyEventController.keyCodeMap[a.toUpperCase()];
var b = a.toUpperCase().charCodeAt(0);
return [b];
},
onkeyevent: function (i, c) {
c = $E(c);
var d = null;
var g = this.handlers[c.keyCode];
var b, f, a;
if (g) for (var h = 0; h < g.length; h++) {
b = g[h].callback;
f = g[h].filter;
try {
if (!f || f(c, i)) {
var node = null;
if (window.Parent && Parent.byTag && c.getTarget) node = Parent.byTag(c.getTarget(), 'a');
user_action(node, 'key', c);
a = b(c, i);
if (a === false) return Event.kill(c);
}
} catch (e) {}
}
return true;
},
resetHandlers: function () {
this.handlers = {};
}
});
此代码允许您将键绑定到回调,并包含更多人类可读的公用键名称。以这里的用法为例:
KeyEventController.registerKey('ESCAPE', Dialog._handleEscapeKey, a);
注册ESCAPE密钥以使对话框消失。默认情况下,handlers
也是空的,因此在您使用registerKey
或手动追加之前不会发生任何事情。请注意,这是registerKey
被调用的唯一实例。
它还有很多AJAX实用程序功能。无论如何都无法从你的域发送任何东西到Facebook,因为相同的原始策略(除非你修改了安全权限,但那是你的错)。与设置的cookie相同。
还有一个历史记录管理器,但它使用的是iFrame,因此无论如何它都无法从您的域中读取它。
最后我发现的类似按钮代码是一个iFrame,所以它不需要JS包含,除非你使用javascript创建iFrame或其他东西。
考虑到这一点,我认为你不需要包括所有这些。
答案 1 :(得分:11)
看起来这与页面上的“喜欢此功能”直接相关。您用来包含“赞”按钮的iframe似乎附带了几个“奖励”脚本。
如果你问我,这是没有集成Facebook的另一个好理由,它似乎是记录按键,这并不酷。
答案 2 :(得分:1)
快速谷歌搜索没有提供很多答案 - 这是Facebook的某种事件跟踪脚本,我看到一条推文和一些论坛帖子,人们提到禁用它并获得速度提升 - 我想想你可以放心地摆脱它,至少它值得一试。
答案 3 :(得分:0)
这绝对来自Facebook-- FBML / API /等许多支持文件之一。
如果您没有在项目中使用任何FB功能,只需删除此文件即可。
如果您使用任何FB功能(如“赞”按钮),则不应直接使用此文件(或任何其他具有神秘名称的文件)。 你应该改为
1)在页面末尾的某处创建空<div id="fb-root"></div>
2)在您的信息页中加入http://connect.facebook.net/en_US/all.js脚本
的进一步说明进行操作答案 4 :(得分:0)
加载IFRAME时,它会调用以下URI:
https://www.facebook.com/plugins/like.php?api_key=[your_api_key]&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D27%23cb%3Df39f390d40f7332%26domain%3D[your_TLD]%26origin%3Dhttp%253A%252F%252F[your_TLD]%252Ff72f1f9bea899e%26relation%3Dparent.parent&colorscheme=light&extended_social_context=false&href=[your_share_URI]&layout=button_count&locale=en_US&node_type=link&sdk=joey&send=false&show_faces=false&width=100
在此页面的脚本标记内是以下调用。
PluginAsyncLoader.load("**https:\/\/fbstatic-a.akamaihd.net\/rsrc.php\/v2\/yq\/r\/CNRdIwfy3yI.js**");
PluginAsyncLoader.ondemandjs = "**https:\/\/fbstatic-a.akamaihd.net\/rsrc.php\/v2\/yH\/r\/muz85bheueJ.js**";
答案 5 :(得分:0)
我在一个我没有下载的文件中找到了“calverly logger”,但是当我关闭Thunderbird(在它后面运行Firefox并且它显示在那里作为文件下载)时,我看到它正在我面前下载所以去了检查它是什么。
该文件被称为:“请参阅All.html”,我觉得这很奇怪而且令人担忧。
该文件的头部包含以下代码,表明它是一个Facebook功能... Calvery Logger位于文件底部附近(此处未显示)。我已经删除了html&lt;靠近文件头部,以便您可以看到代码...不确定它会有所帮助,但期待任何见解......
// !DOCTYPE html
html lang="en" id="facebook" class="no_js"
head
meta charset="utf-8" />
meta name="referrer" content="origin-when-crossorigin" id="meta_referrer" />
script> window._cstart=+new Date();</script><script>function envFlush(a) {function b(c){for(var d in a)c[d]=a[d];}if(window.requireLazy){window.requireLazy(['Env'],b);}else{window.Env=window.Env||{};b(window.Env);}}envFlush({"ajaxpipe_token":"AXiYOZarFarwOff3","lhsh":"AAQFK_mp-","khsh":"0`sj`e`rm`s-0fdu^gshdoer-0gc^eurf-3gc^eurf;1;enbtldou;fduDmdldourCxO`ld-2YLMIuuqSdptdru;qsnunuxqd;rdoe-0unjdojnx-0unjdojnx0-0gdubi^rdbsduOdv-0`sj`e`r-0q`xm`r-0StoRbs`qhof-0mhoj^q`xm`r","timeslice_heartbeat_config":{"pollIntervalMs":33,"idleGapThresholdMs":60,"ignoredTimesliceNames":{"requestAnimationFrame":true,"Event listenHandler mousemove":true,"Event listenHandler mouseover":true,"Event listenHandler mouseout":true,"Event listenHandler scroll":true},"enableOnRequire":true},"shouldLogCounters":false,"timeslice_categories":{"react_render":true,"reflow":true}}); script> style> style>
答案 6 :(得分:-2)
它与Facebook上的病毒黑客相关联,将视频发送给被黑客攻击者的所有朋友。如果您打开这样的视频,您也会被黑客攻击,所有朋友也会收到视频。请勿打开任何可疑的视频或消息,尤其是在Messenger中。