作者s25g5d4 (死城盗贼)
看板Ajax
标题Re: [问题] 读取外部title
时间Fri Jul 30 13:55:52 2010
※ 引述《driftseed (阿辉)》之铭言:
: 档案:http://www.sendspace.com/file/togq72 (959B)
: 截图:http://i.imgur.com/e4xl6.jpg
: 在javascript想要得到一个"外部"网站的标题内容不知要从何下手
: 外部网页仅透过
: xmlhttp.Open("GET",URL, false);
: 来测试网址是否有效,并不打算在框架中载入那个网页
: 不过xmlhttp.Open测试的时候也算是一种载入网页吧?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>测试</title>
<script type="text/javascript">
function request(url, callback, method)
{
var xmlHttp = createXMLHTTPObject();
if ( ! xmlHttp) return;
xmlHttp.open(method, url, true);
xmlHttp.onreadystatechange = function ()
{
if (xmlHttp.readyState != 4) return;
if (xmlHttp.status != 200 && xmlHttp.status != 304)
{
alert('HTTP请求错误 ' + xmlHttp.status);
return;
}
callback(xmlHttp);
}
if (xmlHttp.readyState == 4) return;
xmlHttp.send(null);
}
function createXMLHTTPObject()
{
var XMLHttpFactories = [
function () {return new XMLHttpRequest()},
function () {return new ActiveXObject("Msxml2.XMLHTTP")},
function () {return new ActiveXObject("Msxml3.XMLHTTP")},
function () {return new ActiveXObject("Microsoft.XMLHTTP")},
];
var xmlhttp = false;
for (var i = 0; i < XMLHttpFactories.length; i ++ )
{
try
{
xmlhttp = XMLHttpFactories[i]();
}
catch (e)
{
continue;
}
break;
}
return xmlhttp;
}
function checkUrl(url)
{
try
{
if(url)
{
request(url, function (response)
{
document.getElementById("responseHere").innerHTML=response.responseText.match(/(<title>).*<\/title>/gi)[0].replace(/<.?title>/gi,"");
}, "GET");
}
else
throw "Url is undefined";
}
catch(e)
{
document.getElementById("responseHere").innerHTML=((e) ||
(e.description));
}
}
</script>
</head>
<body>
<form>
输入网址:
<input type="text" id="txtUrl" value="
http://tw.yahoo.com/" />
<input type="submit" value="test"
onclick="checkUrl(document.getElementById('txtUrl').value);return false;" />
</form>
<ul>
<li>测试网址是否有效 </li>
<li>有效--得到该网址的标题--结束</li>
<li>无效--结束</li>
</ul>
<div id="responseHere"></div>
</body>
</html>
奇怪的是 firefox 与 chrome 都不支援 到底是哪里出问题...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.172.94.13
1F:→ s25g5d4:google後听说是MIME Type的问题 07/30 14:19
2F:→ s25g5d4:可是加上 xmlHttp.overrideMimeType('text/html');还是无 07/30 14:19
3F:→ s25g5d4:解... 07/30 14:20
4F:推 danny0838:本机测试或在线上?本机好像 xmlHttp.status = 0 07/30 18:14
5F:→ danny0838:Chrome不知哪版开始本机的ajax变成不能顺利执行...我有 07/30 18:18
6F:→ danny0838:一个程式以前本机线上都能跑,现在Chrome 5.0.375.125只 07/30 18:19
7F:→ danny0838:有线上能跑... 07/30 18:19
8F:→ s25g5d4:本G 难道说线上就可以了吗?! 07/30 18:22
9F:→ liaosankai:Ajax不能取得跨网域的资料,也不能使用本地端的方式 08/09 07:14
10F:→ liaosankai:请Google一下有关Ajax安全性的议题来厘清观念 08/09 07:16
11F:推 danny0838:本机端执行如果使用相对路径是可以的,至少大多数浏览器 08/10 20:51
12F:→ danny0838:都支援,不过多少会有些安全控管,像Fx如果没特别设定权 08/10 20:51
13F:→ danny0838:限就只能读取同层或下层资料夹等等 08/10 20:51
14F:→ s25g5d4:IE不能读 IE不能读 IE不能读 xml\a.xml 08/10 21:10
15F:→ s25g5d4:同层不知道 可是我放下一层不能读= = 08/10 21:10
16F:→ s25g5d4:不过反正我有阿帕契~ 08/10 21:10