1

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の正しい値がないと、レポートできません。実際、hの値はAfXXXXXXXXXXX('Af'の後の11文字の値)です。これは私が知っていることです。

Facebookページで生成する値または関数を取得するためのアイデアはありますか。

Facebookのソーススニペットは以下のとおりです。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&amp;cid=1352686914&amp;rid=1352686914&amp;ref=http%3A%2F%2Fwww.facebook.com%2      F%3Fq&amp;h=AfjSxEzzdTSrz-pS&amp;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);
4

1 に答える 1

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の「コメントを外す」ための別のソリューションを提供したいのですが、正規表現が苦手です:)

于 2012-11-20T22:57:00.410 に答える