Ajaxを使用して作ってみました。
IE6で動作確認しました。(セキュリティのブロックは許可してください。)
FireFox1.5は、セキュリティ上動作しませんでした。
セキュリティの設定が可能であれば動作すると思うのですが、わかりませんでした。
「ajax.html」等、適当な名前で保存してダブルクリックしてください。
<html>
<body>
チェックするファイル<br>
<input type="text" id="txtFile" value="http://www.example.com/a/1.pdf" style="width:500px;"><br><br>
チェックする間隔[分]<br>
<input type="text" id="txtMin" value="1"><br><br>
<input type="button" name="start" value="開 始" onclick="StartChk();">
<input type="button" name="start" value="停 止" onclick="StopChk();alert('停止しました');">
<br>
<br>
<br>
現在の状況:<span id="result">まだ無い</span><br><br>
最終確認日時:<span id="chkdate"></span>
<script LANGUAGE="JavaScript">
<!--
var tmr = null;
function StartChk(){
var chkdate = document.getElementById("chkdate");
var result = document.getElementById("result");
if (navigator.userAgent.indexOf("Firefox") > -1) {
chkdate.textContent = "";
result.textContent = "まだ無い";
}else{
chkdate.innerText = "";
result.innerText = "まだ無い";
}
result.style.color = "black";
SiteCheck();
var min = document.getElementById("txtMin").value;
tmr = setInterval("SiteCheck();", min * 60 * 1000);
}
function StopChk(){
if (tmr) {
clearInterval(tmr);
}
}
function SiteCheck(){
var result = document.getElementById("result");
var url = document.getElementById("txtFile").value;
var httpObj = createXMLHttpRequest();
if (!httpObj){
StopChk();
alert("ERROR");
return false;
}
if (navigator.userAgent.indexOf("Firefox") > -1) {
chkdate.textContent = "確認中";
}else{
chkdate.innerText = "確認中";
}
httpObj.open("HEAD",url,false);
httpObj.send(null);
var dt = new Date();
if (navigator.userAgent.indexOf("Firefox") > -1) {
chkdate.textContent = dt;
}else{
chkdate.innerText = dt;
}
if (httpObj.status == "200"){
if (navigator.userAgent.indexOf("Firefox") > -1) {
result.textContent = "キター!";
}else{
result.innerText = "キター!";
}
result.style.color = "red";
StopChk();
}
}
// HTTP通信用、共通関数
function createXMLHttpRequest()
{
var XMLhttpObject = null;
try{
XMLhttpObject = new XMLHttpRequest();
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
return null;
}
}
}
return XMLhttpObject;
}
// -->
</script>
</body>
</html>
Ajaxを使用して作ってみました。
IE6で動作確認しました。(セキュリティのブロックは許可してください。)
FireFox1.5は、セキュリティ上動作しませんでした。
セキュリティの設定が可能であれば動作すると思うのですが、わかりませんでした。
「ajax.html」等、適当な名前で保存してダブルクリックしてください。
<html>
<body>
チェックするファイル<br>
<input type="text" id="txtFile" value="http://www.example.com/a/1.pdf" style="width:500px;"><br><br>
チェックする間隔[分]<br>
<input type="text" id="txtMin" value="1"><br><br>
<input type="button" name="start" value="開 始" onclick="StartChk();">
<input type="button" name="start" value="停 止" onclick="StopChk();alert('停止しました');">
<br>
<br>
<br>
現在の状況:<span id="result">まだ無い</span><br><br>
最終確認日時:<span id="chkdate"></span>
<script LANGUAGE="JavaScript">
<!--
var tmr = null;
function StartChk(){
var chkdate = document.getElementById("chkdate");
var result = document.getElementById("result");
if (navigator.userAgent.indexOf("Firefox") > -1) {
chkdate.textContent = "";
result.textContent = "まだ無い";
}else{
chkdate.innerText = "";
result.innerText = "まだ無い";
}
result.style.color = "black";
SiteCheck();
var min = document.getElementById("txtMin").value;
tmr = setInterval("SiteCheck();", min * 60 * 1000);
}
function StopChk(){
if (tmr) {
clearInterval(tmr);
}
}
function SiteCheck(){
var result = document.getElementById("result");
var url = document.getElementById("txtFile").value;
var httpObj = createXMLHttpRequest();
if (!httpObj){
StopChk();
alert("ERROR");
return false;
}
if (navigator.userAgent.indexOf("Firefox") > -1) {
chkdate.textContent = "確認中";
}else{
chkdate.innerText = "確認中";
}
httpObj.open("HEAD",url,false);
httpObj.send(null);
var dt = new Date();
if (navigator.userAgent.indexOf("Firefox") > -1) {
chkdate.textContent = dt;
}else{
chkdate.innerText = dt;
}
if (httpObj.status == "200"){
if (navigator.userAgent.indexOf("Firefox") > -1) {
result.textContent = "キター!";
}else{
result.innerText = "キター!";
}
result.style.color = "red";
StopChk();
}
}
// HTTP通信用、共通関数
function createXMLHttpRequest()
{
var XMLhttpObject = null;
try{
XMLhttpObject = new XMLHttpRequest();
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
return null;
}
}
}
return XMLhttpObject;
}
// -->
</script>
</body>
</html>
おおっ、スゴイ。プログラムはよくわかりませんが、とにかく試してみます。
…試しました。すごいです。とりあえず、以後の回答にかかわらず500pt贈呈します。ありがとうございました。
●えっと、はてなポイント3000~6000ptぐらいで、今回のプログラムを改良したものを作ってもらえないでしょうか。
一応、現段階で欲しいと思う機能は、
1,チェックするファイルを10個ぐらいに増やし、どのファイルがアップされたが簡単にわかるようにする。
2,その他はおまかせ。あるいは、相談しながら決めるなどです。
3,またこれとは異なるプログラムだと思いますが、正規表現のような指定はできないものでしょうか。たとえば、3桁の10*.txt
でチェックなどした場合、実際に存在していた、103.txtと105.txtが一覧結果としてでてきたりとかです。
給料?は、はてなポイントで送信するか、新たな質問ページを作り、そこで改良プログラムを見せてもらい、回答ポイントとして
3000pt~6000ptを贈呈するということでどうでしょうか。
一応9月23日の23時まで返答お待ちしております。
URLが分からなければアップロードしたことが分からないと思いますが。
自分のサイトなら、CGIなどをおいてチェックする方法がありますが、他の人のサイトでファイル名が分からないファイルをチェックする方法は少なくとも私は知りません。(無いと思います)
もしそれが可能なら、隠しページの様なものは無意味ですよね。
仮に、トップページからリンクが張られるのであれば、はてなアンテナやWWWCなどでもいいと思いますが。
ちなみに、「1.pdfとか2.jpgとかを総当たりで調べればいいじゃん」という考え方は、相手サイトのサーバに負荷をかけたり、その他いろいろ大変ですのでご遠慮ください。
了解
DiffBrowser
http://www.vector.co.jp/soft/win95/net/se356221.html
前回チェック時との相違部分を表示してくれます。リンク部分は指定のブラウザで開くことができ、表示部分の範囲もキーワードで指定することができます。リンクが追加されれば表示できますが、どうでしょうか?
これでは、アップロードされても、リンクが貼られなければわからないので、ダメです。WWWCでもこの方法は試しました。すいません。
前提条件がよく分からないんですが、
自サーバーなら、
・cron で監視。
・特定ディレクトリ以下を監視する CGI 等を設置。
・アップロード自体が CGI で行われるならその CGI で通知も行う。
・アップロードが FTP 等で行われるならログを監視。
等が考えられます。
自分でいじることが出来ないサーバーであれば予測されるファイル名を総当りでチェックするぐらいしか思い当たりません。
おおっ、スゴイ。プログラムはよくわかりませんが、とにかく試してみます。
…試しました。すごいです。とりあえず、以後の回答にかかわらず500pt贈呈します。ありがとうございました。
●えっと、はてなポイント3000~6000ptぐらいで、今回のプログラムを改良したものを作ってもらえないでしょうか。
一応、現段階で欲しいと思う機能は、
1,チェックするファイルを10個ぐらいに増やし、どのファイルがアップされたが簡単にわかるようにする。
2,その他はおまかせ。あるいは、相談しながら決めるなどです。
3,またこれとは異なるプログラムだと思いますが、正規表現のような指定はできないものでしょうか。たとえば、3桁の10*.txt
でチェックなどした場合、実際に存在していた、103.txtと105.txtが一覧結果としてでてきたりとかです。
給料?は、はてなポイントで送信するか、新たな質問ページを作り、そこで改良プログラムを見せてもらい、回答ポイントとして
3000pt~6000ptを贈呈するということでどうでしょうか。
一応9月23日の23時まで返答お待ちしております。