我正在寻找一种检查特定网页上是否存在链接的方法。我知道这可以用ping,但我真的不知道怎么做。
我所拥有的是其他网页的链接列表,他们也应该有一个反向链接到我的页面。我想检查一下,当反向链接出现时,应该出现一个文本,例如“ok”,当结果为负时,就像“没有反向链接”
我知道链接应该出现的页面的网址,以防您需要知道。
任何帮助都会很棒!
我找到了一段我认为可以用来满足我需求的代码。我自己也不知道如何,但如果有人能帮助我,那将会很棒。
这是代码:
<html>
<head>
<script language="javascript" type="text/javascript">
<!--
var ajax = new XMLHttpRequest();
function pingSite() {
ajax.onreadystatechange = stateChanged;
ajax.open('GET', document.getElementById('siteToCheck').value, true);
ajax.send(null);
}
function stateChanged() {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
document.getElementById('statusLabel').innerHTML = "Success!";
}
else {
document.getElementById('statusLabel').innerHTML = "Failure!";
}
}
}
-->
</script>
</head>
<body>
Site To Check:<br />
<input type="text" id="siteToCheck" /><input type="button" onclick="javascript:pingSite()" />
<p>
<span id="statusLabel"></span>
</p>
</body>
答案 0 :(得分:0)
你不能原生地使用Javascript来解析外部域,我使用了一个代理页面来嗅探内容并将其提供给ajax回调。
我的解决方案基本上抓住了要检查的网站的来源,并查看一个字符串,它可以是您的网站链接匹配。我认为这应该足够了,而不是试图解析和寻找锚点,但你可以像你想要的那样彻底(将整个事物解析为DOM元素并查找href属性值)。
如果您遇到任何问题,请告诉我。
<?php
$query = isset($_POST['submitted']) ? true : false;
if ( $query ) {
$url = @file_get_contents( $_POST['site-url'] );
if ( $url && strlen( $url ) > 0 ) {
$checkFor = $_POST['check-for'];
$match = preg_match( '/' . $checkFor . '/', $url );
echo $match ? 'string (link) is found' : 'string not found';
} else {
echo 'could not connect to site..';
}
exit;
}
?>
<form action="" id="site-checker">
<div class="field">
<label for="site-url">Site to check:</label>
<input id="site-url" name="site-url" value="http://jquery.com">
</div>
<div class="field">
<label for="check-for">Check for:</label>
<input id="check-for" name="check-for" value="docs.jquery.com">
</div>
<input type="hidden" name="submitted" value="true">
<input type="submit">
</form>
<div id="result"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script>
$('#site-checker').submit(function(e) {
e.preventDefault();
$.ajax({
url:'check.php',
type:'POST',
data:$('#site-checker').serialize(),
success:function(html) {
$('#result').html( html );
}
});
});
</script>
答案 1 :(得分:0)
恕我直言,最好在服务器端脚本中执行此任务。根据您的平台,可能存在发送HTTP请求和HTML解析的功能,这是您需要的功能。 Javascript具有跨域限制,这将阻止您将ajax请求发送到与托管网页的域不同的域。