如果我在Chrome的JavaScript控制台中编写代码,我可以输入以下命令检索整个HTML源代码:
var a = document.body.InnerHTML; alert(a);
对于Facebook上的fb_dtsg,我可以通过写下来轻松地提取它:
var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value;
现在,我正在尝试从Facebook页面中提取代码“h = AfJSxEzzdTSrz-pS”。 h值对Facebook报告特别有用。
如何获取报告的h值?我不知道h值是多少;与不同用户通信时,h值完全不同。如果没有正确的值,则无法报告。实际上,h值是AfXXXXXXXXXXX('Af'之后的11个字符值),这就是我所知道的。
您是否有任何关于在Facebook页面上获取价值或任何功能的想法。
Facebook Source代码段如下,您可以在Facebook个人资料中查看来源,并搜索h = Af,您将获得该值:
<code class="hidden_elem" id="ukftg4w44">
<!-- <div class="mtm mlm">
...
....
<span class="itemLabel fsm">Unfriend...</span></a></li>
<li class="uiMenuItem" data-label="Report/Block...">
<a class="itemAnchor" role="menuitem" tabindex="-1" href="/ajax/report/social.php?content_type=0&cid=1352686914&rid=1352686914&ref=http%3A%2F%2Fwww.facebook.com%2 F%3Fq&h=AfjSxEzzdTSrz-pS&from_gear=timeline" rel="dialog">
<span class="itemLabel fsm">Report/Block...</span></a></li></ul></div>
...
....
</div> -->
</code>
请指导我。如何准确提取价值?
我尝试使用以下代码,但注释块阻止我提取代码。如何提取注释块内的值?
var a = document.getElementsByClassName('hidden_elem')[3].innerHTML;alert(a);
答案 0 :(得分:2)
这是我的第一次尝试,假设你不怕一点点jQuery:
// http://stackoverflow.com/a/5158301/74757
function getParameterByName(name, path) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var html = $('.hidden_elem')[0].innerHTML.replace('<!--', '').replace('-->', '');
var href = $(html).find('.itemAnchor').attr('href');
var fbId = getParameterByName('h', href); // fbId = AfjSxEzzdTSrz-pS
编辑:没有jQuery的方法:
// http://stackoverflow.com/a/5158301/74757
function getParameterByName(name, path) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var hiddenElHtml = document.getElementsByClassName('hidden_elem')[0]
.innerHTML.replace('<!--', '').replace('-->', '');
var divObj = document.createElement('div');
divObj.innerHTML = hiddenElHtml;
var itemAnchor = divObj.getElementsByClassName('itemAnchor')[0];
var href = itemAnchor.getAttribute('href');
var fbId = getParameterByName('h', href);
我真的想为“取消注释”HTML提供不同的解决方案,但我对正则表达式感到厌恶:)