js 怎么判断空链接 跨链接网址的状态怎么获取

随风飘荡的火焰 2011-03-09 02:26:27
如题
1. javascript 怎么判断网页中的链接是空链接呢
2. 怎么获取其他站url的http返回状态
这个我用回调函数

//指定回调方法backResponse
function backResponse() {
//响应完毕
if (request.readyState == 4) {
//如果服务端响应状态码==200
if (request.status == 200) {
//服务端的响应内容
var response = request.responseText;
alert(response);
} else {
alert("status:" + request.status);
}
}
}

当open的url为本站地址时就能正确返回
但是url为其他站就不行了,比如在csdn网页中嵌入代码,想获取 http://www.google.com.hk的网页状态就不行
我是初学者,希望高手提点下怎样才能跨站访问呢!
...全文
391 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 theforever 的回复:]

那你所指的空链接,不是<a href="">xxx</a>这样的形式吧,否则也谈不到什么跨域问题了。
准确说你的意思是指失效链接。
好像你是要做一个SEO工具吧。

对你所说情况,可以用隐藏的iframe代替AJAX。就是在注入JS中创建一个隐藏的IFRAME,加上onload事件。
如果发生onload事件就说明链接有效,能够加载。
如果改变src为目标链接地址后,没有发生onlo……
[/Quote]
哈哈 这个方法也不错 就是慢了点 谢谢你了啊
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qc20042 的回复:]
空链接的写法太多了
比如
<a href= ""
<a href=javascript:void(0)
<a href="#"
有时候还可能少个多个字符的
[/Quote]
你如果指的真是普通意义的空链接,那这样就小题大作了。不管多个少个字符,总体形式还是有规律的,都可以用正则检查处理。而且相对也比用AJAX或者IFRAME更有效率。
  • 打赏
  • 举报
回复
那你所指的空链接,不是<a href="">xxx</a>这样的形式吧,否则也谈不到什么跨域问题了。
准确说你的意思是指失效链接。
好像你是要做一个SEO工具吧。

对你所说情况,可以用隐藏的iframe代替AJAX。就是在注入JS中创建一个隐藏的IFRAME,加上onload事件。
如果发生onload事件就说明链接有效,能够加载。
如果改变src为目标链接地址后,没有发生onload事件,则目标地址就是失效链接。

function theforever_csdn_测试URL(u){
在浮动层里生成关于U的报告位置,给状态是否有效的部分加个ID或者能保证可以找到它就可以,先一律显示为“无效链接”;
iframe.sid="存储上面给状态显示部分设置的ID或者INDEX"
iframe.src=u;
}

在iframe的onload里:取iframe.sid,由它对应到链接的状态显示部分,将它的值设为“有效”。

这样,所有链接开始初始化为无效链接,而有效的链接将会由于在IFRAME里得到加载激发onload事件进而把状态改写成“有效”,事就办完了。

如果方法有效,记得东西写成发给我份看看。
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hch126163 的回复:]

ajax 不能跨越
[/Quote]
那有其他方法吗?
hch126163 2011-03-09
  • 打赏
  • 举报
回复
ajax 不能跨越
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 falizixun2 的回复:]

1. javascript 怎么判断网页中的链接是空链接呢?
回答:原理根据URL特征值进行判断,IE和火狐处理机制不同,分开区别!

<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
……
[/Quote]
空链接的写法太多了
比如
<a href= ""
<a href=javascript:void(0)
<a href="#"
有时候还可能少个多个字符的
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 theforever 的回复:]

先说说需求背景,看看有什么必要的价值。
[/Quote]

我是写一个js插件 通过浏览器地址动态加载 以浮层方式显示到界面
浮层中显示 空链接 异常链接的信息 帮助查看网页
kaifadi 2011-03-09
  • 打赏
  • 举报
回复
呵呵,不过1#的代码在FF里是无法获取的,只能IE操作!
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 windxxf 的回复:]

我试了下可以啊
HTML code

<!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……
[/Quote]
我试了下 是不行 用的是火狐测试的
点击test按钮 弹出消息框 state:0
不管直接本地打开,还是放到tomcat中都是这样
不知道你那边环境是咋样的呢!
kaifadi 2011-03-09
  • 打赏
  • 举报
回复
1. javascript 怎么判断网页中的链接是空链接呢?
回答:原理根据URL特征值进行判断,IE和火狐处理机制不同,分开区别!

<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<script type="text/javascript">

window.onload=function(){
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++)
{
if(/MSIE/i.test(window.navigator.userAgent))
{
var reg=/((.*?)+\/)?\w+\.(.*?)+$/ig;
reg.exec(window.location);
if(a[i].getAttribute('href')==RegExp.$1){alert("第"+(i+1)+"个A标签为空链接!");}
}
else
{
if(a[i].getAttribute('href')==""){alert("第"+(i+1)+"个A标签为空链接!");}
}

}
}
</script>
</head>
<body>
1 <a href="http://www.baidu.com">baidu</a><br>
2 <a href="../file/upload">baidu</a><br>
3 <a href="">baidu</a><br>
4 <a href="/href/baidu.com">baidu</a><br>
5 <a href="">baidu</a><br>
6 <a href="file/">baidu</a><br>
</body>

</html>
2. 怎么获取其他站url的http返回状态
回答:如1#;
  • 打赏
  • 举报
回复
先说说需求背景,看看有什么必要的价值。
windxxf 2011-03-09
  • 打赏
  • 举报
回复
我试了下可以啊

<!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 language="javascript">
//定义XMLHttp对象
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}

function chk() {
var url = document.getElementById("url").value;
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}

function updatePage() {
if (xmlHttp.readyState < 4) {
document.getElementById("msg").innerHTML ="loading...";
}
if (xmlHttp.readyState == 4) {
document.getElementById("msg").innerHTML= "";
if (xmlHttp.status == 200) {
//服务端的响应内容
var response = xmlHttp.responseText;
alert(response);
} else {
alert("status:" + xmlHttp.status);
}
}
}

//document.ready(function(){
// document.getElementById("uname").onblur = chkUname();
//});

</script>
</head>

<body>
<input type="text" name="url" id="url" value="http://www.baidu.com" /><input type="button" value="test" onclick="chk()" />
<span id="msg"></span>
</body>
</html>

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧