h=Af を取得しようとしています?????????? ソーシャル ネットワーキング サイトのレポート リンクからの値。私はこれでテストします: http://jsfiddle.net/rtnNd/6/値を取得するために、私がテストしたときに動作します。
しかし、私はユーザーがそれを操作したくありません。スクリプトはページを自動取得し、その値を取得する必要があります。(Google Chrome Javascript Consoleでテストします)次のコーディングを試してみると、ページをスクラブして値dに割り当て、hの値を見つけますが、検索/置換はまったく機能しません。その中で getElementsByClassName が機能しないのはなぜですか?
JQuery の場合:
function getParameterByName(name, path) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var URL = 'http://www.facebook.com/zuck';
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", URL, true);
xmlhttp.setRequestHeader("Content-type", "application/xhtml+xml");
xmlhttp.send();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.status == 404) {
result = error404;
}
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var d = xmlhttp.responseText;
var jayQuery = document.createElement('script');
jayQuery.src = "//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js";
document.getElementsByTagName("head")[0].appendChild(jayQuery);
var href = $($('.hidden_elem').d.replace('<!--', '').replace('-->', '')).find('.itemAnchor[href*="h="]').attr('href');
var fbhvalue = getParameterByName('h', href);
alert(fbhvalue);
}
}
jqueryを追加しても、「エラー:キャッチされていないTypeError:未定義のメソッド 'replace'を呼び出せません」というエラーが表示されます。
JQuery を使用しない場合:
function getParameterByName(name, path) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var URL = 'http://www.facebook.com/zuck';
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", URL, true);
xmlhttp.setRequestHeader("Content-type", "application/xhtml+xml");
xmlhttp.send();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.status == 404) {
// result = error404;
}
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
d = xmlhttp.responseText;
checker(d);
}
}
function checker(i) {
i.value = i;
var hiddenElHtml = i.replace('<!--', '').replace('-->', '').find('.itemAnchor[href*="h="]').attr('href');
var divObj = document.createElement('div');
divObj.innerHTML = hiddenElHtml;
var itemAnchor = divObj.getElementsByClassName('itemAnchor')[0];
var href = itemAnchor.getAttribute('href');
var fbId = getParameterByName('h', href);
alert(fbId);
}
実行すると、「オブジェクトにメソッド 'find' がありません」というエラーが表示されました。
xmlhttp.onreadystatechange ステートメントが呼び出された後、getElementsByClassName、getParameterByName、Jquery、getAttribute が機能しないのはなぜですか? 教えてください。値を取得する方法を見つける方法はありますか? 私の質問を読んで答えてくれてありがとう!
更新: (プロファイル ページにアクセスした場合、Google Chrome の JavaScript コンソールで次のスクリプトを実行すると、h 値が取得されますが、実際にはそのようにしたくありません... ユーザー プロファイル名を指定したいのですが、自動的に取得し、その h 値を取得します。)
var jayQuery = document.createElement('script');
jayQuery.src = "//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js";
document.getElementsByTagName("head")[0].appendChild(jayQuery);
function getParameterByName(name, path) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var href = $($('.hidden_elem')[1].innerHTML.replace('<!--', '').replace('-->', '')).find('.itemAnchor[href*="h="]').attr('href');
alert(href);
var fbId = getParameterByName('h', href);
alert(fbId);