我想要獲取h = Af ??????????來自社交網站上報告鏈接的價值。我用這個測試:http://jsfiddle.net/rtnNd/6/來檢索值,它在我測試出來的時候有效。XMLHttpRequest onreadystatechange語句後Javascript對象錯誤的回調行爲
但我不希望用戶與它進行交互。該腳本必須自動檢索該頁面並獲取其值。 (我使用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。
沒有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);
}
當我運行它,我叫了錯誤 「對象有沒有方法 '發現'。」
爲什麼在調用xmlhttp.onreadystatechange語句後getElementsByClassName,getParameterByName,Jquery,getAttribute不起作用?請你指出我。有什麼方法可以找到如何獲得價值?感謝您閱讀我的問題並回答!如果我在個人檔案頁面上訪問過,在谷歌瀏覽器的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);
你實際上並沒有用縮進來編碼,看起來像那樣嗎? –
我這樣做,因爲你知道我是新手,並堅持這一點。 :( –
這將是第一件需要改變的地方。將你的代碼複製/粘貼到http://jsbeautifier.org,你會更清楚地看到代碼是乾淨的。 –