请问能否用JavaScript提取其他网站的网页并保存到一个字符串变量里? http://www.w3schools.com/XML/xml_http.asp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 XMLHTTP 不是说不能跨域访问的吗? <html><head><script>var xmlHttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();window.onload=function(){ xmlHttp.open("get","http://topic.csdn.net/u/20090203/13/f5ff51c5-879e-4975-a2f3-2ffe84bdc962.html",true); xmlHttp.onreadystatechange = processRequest; xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.send(null);} function processRequest(){ if(xmlHttp.readyState==4) { if(xmlHttp.status==200) { alert(xmlHttp.responseText); document.getElementById("container").innerHTML=xmlHttp.responseText; } }}</script></head><body><div id="container"></div></body></html> 不会有这段提示吧。楼主参考下面代码<html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><script type="text/javascript">$ = document.getElementById;var ForAppending = 8; // 追加模式var ForReading = 1; // 读取模式var ForWriting = 2; // 写入模式function AppendFileText(filename, text){ var fso = new ActiveXObject("Scripting.FileSystemObject"); // 文件系统 var istream = fso.OpenTextFile(filename, ForAppending, true); if (!istream) return; try { istream.write(text); istream.Close(); return true; } catch (e) { return false; } finally { istream = null; fso = null; }}/// <summary>/// 追加日志/// </summary>/// <param name="text">日志文本</param>function AppendLog(text) { $("TextareaLog").value += text; AppendFileText("log.txt", text);}/// <summary>/// 获取链接的文本内容/// </summary>/// <param name="url">页面链接地址</param>/// <returns>返回页面HTML文本</returns>function GetUrlText(url) { var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); try { xmlhttp.open("get", url, false); xmlhttp.send(); return xmlhttp.responseText; } catch (e) { return ""; } finally { xmlhttp = null; }}function dateFormat(date, separator){ date = typeof date == "number" ? new Date(date) : (typeof date == "string" ? new Date(Date.parse(date)) : date); separator = typeof separator == "string" ? separator : "$1年$2月$3日 $4时$5分$6秒"; var str = "" + date.getFullYear() + "-" + (date.getMonth() + 101) + "-" + (date.getDate() + 100) + " " + (date.getHours() + 100) + ":" +(date.getMinutes() + 100) + ":" + (date.getSeconds() + 100); return str.replace(/^(\d+)-\d*(\d{2})-\d*(\d{2}) \d*(\d{2}):\d*(\d{2}):\d*(\d{2})$/g, separator);}function GameItem(itemText) { var re = /<td>\s*<a\s+href="\/Games\/PawnList.aspx\?id=(\d+)&checkid=(\d+)"\s*target="_blank">\s*([A-Z]+):\s*(.*?)<\/a>\s*<\/td>\s*<td>\s*(.*?)\s*<\/td>\s*<td>\s*(\d+)\s*\/\s*(\d+)\s*.*?<\/td>/ig; var match = re.exec(itemText); if (!match) return; this.gameid = match[1]; this.checkid = match[2]; this.index = match[3]; this.caption = match[4]; this.odds = match[5]; this.point = match[6]; this.count = match[7];}function GameInfos(htmlText) { htmlText = htmlText.replace(/\r\n/g, " "); var re = /<span\s+class="time">停止时间:(.*?)<\/span>/ig; var match = re.exec(htmlText); this.time = new Date(match[1].replace(/-/g, "//")); var matchs = htmlText.match(/<td>\s*<a\s+href="\/Games\/PawnList.aspx\?id=(\d+)&checkid=(\d+)"\s*target="_blank">\s*([A-Z]+):\s*(.*?)<\/a>\s*<\/td>\s*<td>\s*(.*?)\s*<\/td>\s*<td>\s*\d+\s*\/\s*\d+\s*.*?<\/td>/ig); this.items = []; this.point = 0; this.count = 0; for (var i = 0; matchs && i < matchs.length; i++) { var item = new GameItem(matchs[i]); this.items.push(item); this.point += parseInt(item.point); this.count += parseInt(item.count); }}function PostRequest(url, deleteInfo) { var data = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=" + encodeURIComponent(deleteInfo.viewState) + "&reasonGroup=2&ctl00%24ContentPlaceHolder1%24tb_Reason=" + encodeURIComponent($("TextReason").value) + "&ctl00%24ContentPlaceHolder1%24bt_Submit=%E7%A1%AE%E5%AE%9A&" + "__EVENTVALIDATION=" + encodeURIComponent(deleteInfo.eventValidation); var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); try { xmlhttp.open("Post", url, false); xmlhttp.setRequestHeader("Referer", url); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Accept-Encoding", "gzip,deflate"); xmlhttp.setRequestHeader("Content-Length", data.length); xmlhttp.send(data); return xmlhttp.responseText; } catch (e) { return e.message; } finally { xmlhttp = null; }} function CheckboxRefreshClick() { if (!$("CheckboxRefresh").checked) return; var htmlText = GetUrlText("http://community.csdn.net/Games/GamePawn.aspx?id=" + $("TextareaId").value + "&_t_" + Math.random()); var gameInfos = new GameInfos(htmlText); var note = ""; var webTime = new Date(new Date().getTime() + parseInt($("TextareaDiffer").value)); note += "时间:" + dateFormat(gameInfos.time) + "\r\n"; note += "时间:" + dateFormat(webTime) + "\r\n"; note += "倒计时:" + (gameInfos.time - webTime) / 1000 + "秒\r\n"; note += "总分数:" + gameInfos.point + "\r\n"; note += "总人数:" + gameInfos.count + "\r\n"; note += "-------明细------\r\n"; for (var i = 0; i < gameInfos.items.length; i++) { note += "选项:" + gameInfos.items[i].index + ","; note += "人数:" + gameInfos.items[i].count + ","; note += "分数:" + gameInfos.items[i].point + ","; note += "平均:" + parseInt(gameInfos.items[i].point) / parseInt(gameInfos.items[i].count) + "\t"; note += gameInfos.items[i].caption + "\r\n"; } $("TextareaNote").value = note; setTimeout("CheckboxRefreshClick();", parseInt($("TextareaDelay").value));}</script><table style="width:100%;height:100%;"> <tr style="height:10%"> <td> <div> ID:<input type="input" value="337" id="TextareaId" style="width:50px;" /> <input type="checkbox" id="CheckboxRefresh" onclick="CheckboxRefreshClick();" /><label for="CheckboxRefresh">自动刷新</label> 刷新频率(毫秒):<input type="input" value="1000" id="TextareaDelay" style="width:60px;" /> 网络时间差(毫秒,服务器减本地时间):<input type="input" value="12000" id="TextareaDiffer" style="width:60px;"/> </div> <div> </div> </td> </tr> <tr> <td> 信息: <textarea id="TextareaNote" style="width:100%; height:100%"></textarea> </td> </tr> <!--<tr> <td> 日志: <textarea id="TextareaLog" style="width:100%; height:100%"></textarea> </td> </tr>--></table></body></html> 提醒一下,如果你是Windows系统的话,而且你是做web server的情况,使用ServerXMLHTTP比较好。至于为什么,你可以参考以下文章:http://support.microsoft.com/kb/290761 用JavaScript截取网页中的有用代码,放到自己的显示区域内。 求一个二维数据排序的问题 小弟菜鸟大家多指点 javascript如何卸载这样加载的播放器? 问题:缺少')' 如何获取模式对话框的标题双击事件? img图像的鼠标拖动平移如何实现? 谁有keycode与其所对应的键的值?? 按窗口右上角关闭窗口时的又一问题 大家好,问一下关于打印和关闭窗口的IE功能! 分虽不多,进来看看吧! 如何令一块div停留在屏幕的底部? 求一正则表达式,关于gb2312汉字的。
<head>
<script>
var xmlHttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
window.onload=function()
{
xmlHttp.open("get","http://topic.csdn.net/u/20090203/13/f5ff51c5-879e-4975-a2f3-2ffe84bdc962.html",true);
xmlHttp.onreadystatechange = processRequest;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(null);
}
function processRequest()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
alert(xmlHttp.responseText);
document.getElementById("container").innerHTML=xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<script type="text/javascript">$ = document.getElementById;var ForAppending = 8; // 追加模式
var ForReading = 1; // 读取模式
var ForWriting = 2; // 写入模式function AppendFileText(filename, text)
{
var fso = new ActiveXObject("Scripting.FileSystemObject"); // 文件系统
var istream = fso.OpenTextFile(filename, ForAppending, true);
if (!istream) return;
try {
istream.write(text);
istream.Close();
return true;
} catch (e) {
return false;
} finally {
istream = null;
fso = null;
}
}/// <summary>
/// 追加日志
/// </summary>
/// <param name="text">日志文本</param>
function AppendLog(text) {
$("TextareaLog").value += text;
AppendFileText("log.txt", text);
}/// <summary>
/// 获取链接的文本内容
/// </summary>
/// <param name="url">页面链接地址</param>
/// <returns>返回页面HTML文本</returns>
function GetUrlText(url) {
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
try {
xmlhttp.open("get", url, false);
xmlhttp.send();
return xmlhttp.responseText;
} catch (e) {
return "";
} finally {
xmlhttp = null;
}
}function dateFormat(date, separator){
date = typeof date == "number" ? new Date(date) :
(typeof date == "string" ? new Date(Date.parse(date)) : date);
separator = typeof separator == "string" ? separator : "$1年$2月$3日 $4时$5分$6秒";
var str = "" + date.getFullYear() + "-" + (date.getMonth() + 101) + "-" + (date.getDate() + 100) + " " +
(date.getHours() + 100) + ":" +(date.getMinutes() + 100) + ":" + (date.getSeconds() + 100);
return str.replace(/^(\d+)-\d*(\d{2})-\d*(\d{2}) \d*(\d{2}):\d*(\d{2}):\d*(\d{2})$/g, separator);
}function GameItem(itemText) {
var re = /<td>\s*<a\s+href="\/Games\/PawnList.aspx\?id=(\d+)&checkid=(\d+)"\s*target="_blank">\s*([A-Z]+):\s*(.*?)<\/a>\s*<\/td>\s*<td>\s*(.*?)\s*<\/td>\s*<td>\s*(\d+)\s*\/\s*(\d+)\s*.*?<\/td>/ig;
var match = re.exec(itemText);
if (!match) return;
this.gameid = match[1];
this.checkid = match[2];
this.index = match[3];
this.caption = match[4];
this.odds = match[5];
this.point = match[6];
this.count = match[7];
}function GameInfos(htmlText) {
htmlText = htmlText.replace(/\r\n/g, " ");
var re = /<span\s+class="time">停止时间:(.*?)<\/span>/ig;
var match = re.exec(htmlText);
this.time = new Date(match[1].replace(/-/g, "//"));
var matchs = htmlText.match(/<td>\s*<a\s+href="\/Games\/PawnList.aspx\?id=(\d+)&checkid=(\d+)"\s*target="_blank">\s*([A-Z]+):\s*(.*?)<\/a>\s*<\/td>\s*<td>\s*(.*?)\s*<\/td>\s*<td>\s*\d+\s*\/\s*\d+\s*.*?<\/td>/ig);
this.items = [];
this.point = 0;
this.count = 0;
for (var i = 0; matchs && i < matchs.length; i++) {
var item = new GameItem(matchs[i]);
this.items.push(item);
this.point += parseInt(item.point);
this.count += parseInt(item.count);
}
}function PostRequest(url, deleteInfo)
{
var data = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=" + encodeURIComponent(deleteInfo.viewState) +
"&reasonGroup=2&ctl00%24ContentPlaceHolder1%24tb_Reason=" + encodeURIComponent($("TextReason").value) +
"&ctl00%24ContentPlaceHolder1%24bt_Submit=%E7%A1%AE%E5%AE%9A&" +
"__EVENTVALIDATION=" + encodeURIComponent(deleteInfo.eventValidation);
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
try {
xmlhttp.open("Post", url, false);
xmlhttp.setRequestHeader("Referer", url);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Accept-Encoding", "gzip,deflate");
xmlhttp.setRequestHeader("Content-Length", data.length);
xmlhttp.send(data);
return xmlhttp.responseText;
} catch (e) {
return e.message;
} finally {
xmlhttp = null;
}
} function CheckboxRefreshClick() {
if (!$("CheckboxRefresh").checked) return;
var htmlText = GetUrlText("http://community.csdn.net/Games/GamePawn.aspx?id=" + $("TextareaId").value + "&_t_" + Math.random());
var gameInfos = new GameInfos(htmlText);
var note = "";
var webTime = new Date(new Date().getTime() + parseInt($("TextareaDiffer").value));
note += "时间:" + dateFormat(gameInfos.time) + "\r\n";
note += "时间:" + dateFormat(webTime) + "\r\n";
note += "倒计时:" + (gameInfos.time - webTime) / 1000 + "秒\r\n";
note += "总分数:" + gameInfos.point + "\r\n";
note += "总人数:" + gameInfos.count + "\r\n";
note += "-------明细------\r\n";
for (var i = 0; i < gameInfos.items.length; i++) {
note += "选项:" + gameInfos.items[i].index + ",";
note += "人数:" + gameInfos.items[i].count + ",";
note += "分数:" + gameInfos.items[i].point + ",";
note += "平均:" + parseInt(gameInfos.items[i].point) / parseInt(gameInfos.items[i].count) + "\t";
note += gameInfos.items[i].caption + "\r\n";
}
$("TextareaNote").value = note;
setTimeout("CheckboxRefreshClick();", parseInt($("TextareaDelay").value));
}
</script><table style="width:100%;height:100%;">
<tr style="height:10%">
<td>
<div>
ID:<input type="input" value="337" id="TextareaId" style="width:50px;" />
<input type="checkbox" id="CheckboxRefresh" onclick="CheckboxRefreshClick();" /><label for="CheckboxRefresh">自动刷新</label>
刷新频率(毫秒):<input type="input" value="1000" id="TextareaDelay" style="width:60px;" />
网络时间差(毫秒,服务器减本地时间):<input type="input" value="12000" id="TextareaDiffer" style="width:60px;"/>
</div>
<div>
</div>
</td>
</tr>
<tr>
<td>
信息:
<textarea id="TextareaNote" style="width:100%; height:100%"></textarea>
</td>
</tr>
<!--<tr>
<td>
日志:
<textarea id="TextareaLog" style="width:100%; height:100%"></textarea>
</td>
</tr>-->
</table>
</body>
</html>
http://support.microsoft.com/kb/290761