我想得到 h=Af?????????? 来自社交网站上的报告链接的价值。我用这个测试:http: //jsfiddle.net/rtnNd/6/来检索值,它在我测试时有效。
但我不希望用户与之交互。脚本必须自动检索页面并获取它的值。(我使用 Google Chrome Javascript 控制台进行测试)当我尝试使用以下编码时,它会拼写页面并分配给值 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);
}
当我运行它时,我得到一个名为“对象没有方法'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);