ブログ記事のリスト|星屋工作室

星屋工作室

星屋工作室 - 映画とカレーが好きでSEOに燃えています。山口県周南市ではたらくサラリーマンの仕事、趣味、パソコンの足跡的ブログです。

Javascript の最近のブログ記事


ブログを更新して、RSSも更新されているが、

Google AJAX Feed APIで読み込んだフィードが更新されていないということが多々あります。

 

それは、

Googleのキャッシュにあるフィードを読み込んでいるからだそうです。

 

キャッシュをクリアまたはリセットする方法があるのかもしれませんが、

リアルタイムに最新の記事一覧を表示する方法は

読み込むフィードのURLにユニークな値を付加させることで

毎回最新の一覧を表示できるようになります。

今回はユニークな値として現在日時をURLに付加させてみました。

 

<script type="text/javascript" src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●"></script>

<script type="text/javascript">

google.load("feeds", "1");


function initialize()
{


// 現在の日付と時間を取得
var date = new Date();
var year = date.getYear();
var mon = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();

var query = year + mon + day + hour + min + sec;

//現在の最新RSSフィードの取得
var feed = new google.feeds.Feed("http://example.com/blog/rss20.xml?"+ query );

//取得するフィード数
feed.setNumEntries(6)

//実際に読む込む
feed.load(function(result)
{

//読み込めたか判別
if (!result.error)
{
//表示部分を選択
var container = document.getElementById("feed");

//変数の初期化
var list = "";

//Feedの処理
list = '<ul>';
for (var i = 0; i < result.feed.entries.length; i++)
{
//Feedを一つ抽出
var entry = result.feed.entries[i];
if(entry.title.match(/^PR:/)) {
//「PR:」から始まるものがあれば何もしない
}
else{
list += '<li>';
list += '<a href="' + entry.link + '" target="_blank" title="' + entry.title + '">' + entry.title + '</a>';
var strdate = createDateString(entry.publishedDate);
list += '&nbsp;(' + strdate + ')';
list += '</li>';
}
}
list += '</ul>';
container.innerHTML = list;
}
});
}

//日付の表示方法を変更
function createDateString(publishedDate)
{
var pdate = new Date(publishedDate);
var pday = pdate.getDate();
var pmonth = pdate.getMonth() + 1;
var pyear = pdate.getFullYear();
var phour = pdate.getHours();
var pminute = pdate.getMinutes();
var psecond = pdate.getSeconds();
//var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
var strdate = pyear + "-" + pmonth + "-" + pday ;
return strdate;
}

google.setOnLoadCallback(initialize);

</script>

<div id="feed">Loading...</div>

 

ちょっと難点なのは、

毎回フィードの読み込みを行うので、表示がもたつきます。

なので、

1時間ごとくらいにするために「分」のminと「秒」のsecは省いた方がいいかもしれません。

 

 

参考ページ

Google Ajax Feed API でRSS取得したけど更新されない!!
http://cliffbros.blog49.fc2.com/blog-entry-195.html


[記事編集]

トラックバック(0)

トラックバックURL:


Javascriptで宅急便各社の荷物追跡サービスの検索結果を表示するフォームを作ってみた

  1. 検索窓に伝票番号(お問い合せ番号)を入力
  2. 宅急便会社を選択
  3. ボタンを押す
  4. 新規ウィンドウに検索結果が表示される

というフォームをJavascriptを使用して作ってみた。

 

よく使うのは

  • クロネコヤマト
  • 佐川急便
  • エクスパック

なので、この3つを検索できるようにしてみました。

nimotsu.html(http://hoshiya.biz/nimotsu_search/nimotsu.html

<!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>
</head>
<body>
<script type="text/javascript">
<!--

function data_in(){

 //フォームデータ入力用変数
    var denpyou;
    var kaisha;
 var url;
 url = new Array();
 //クロネコヤマト
 url[1] = "http://jizen.kuronekoyamato.co.jp/jizen/servlet/crjz.b.NQ0010?id=";
 //佐川急便
 url[2] = "http://k2k.sagawa-exp.co.jp/p/web/okurijosearch.do?okurijoNo=";
 //日本郵便(ゆうパック・EXPACK・ポスパケット)
 url[3] = "http://tracking.post.japanpost.jp/service/singleSearch.do?org.apache.struts.taglib.html.TOKEN=&searchKind=S002&locale=ja&SVID=&reqCodeNo1=";


    //フォームデータを受け取る
    if(document.form1.denpyou.value==""){
  alert("伝票番号が入力されていません。");
  }
 else{
  denpyou=document.form1.denpyou.value;  
 
  //ラジオボタンの値を受け取る 
  for (i=0;i<document.form1.kaisha.length;i++){
    if (document.form1.kaisha[i].checked)
        kaisha = document.form1.kaisha[i].value;
      }
      
  url = url[kaisha];
 
  //新しいウィンドウで検索結果を表示
  window.open(url+denpyou);
  }

}


/* 半角数字チェック */
function TextCheck() {
   var str = document.form1.denpyou.value;
   if( str.match( /[^0-9.-]+/ ) ) {
      alert("半角数字、半角ハイフンで入力して下さい。");
      return 1;
   }
   return 0;
}

-->

</script>
<form id="form1" name="form1" method="post" action="">
  <br />
  <label for="denpyou">伝票番号
  <input name="denpyou" type="text" id="denpyou" value="" onblur="TextCheck();" />
  </label>
  (半角数字、半角ハイフン) <br />
  <label for="kaisha">会社選択
  <input name="kaisha" type="radio" id="kaisha" value="1" checked />
  ヤマト運輸
  <input name="kaisha" type="radio" id="kaisha" value="2" />
  佐川急便
  <input name="kaisha" type="radio" id="kaisha" value="3" />
  ゆうパック・EXPACK</label>
  <br />
  <input name="button" type="button" id="button" value="検索結果ページを開く" onClick="data_in();" />
</form>
</body>
</html>


 

実際のフォーム↓↓


(半角数字、半角ハイフン)

 

 

PHP版は以下をご参照ください。

PHPで荷物追跡サービスの検索フォームを作ってみる。
http://hoshiya.biz/2009/09/php-1.html


[記事編集]

トラックバック(0)

トラックバックURL:


アメーバブログのRSSから「PR:」の部分を消して表示するスクリプトを一部変更してみた。

 

変更前のスクリプトは以下のページをご参照ください。

Google AJAX Feed APIを使ってアメーバブログの「PR:」を除く記事一覧を表示するJavascript
http://hoshiya.biz/2009/06/google-ajax-feed-apiprjavascript.html

 

変更の主な内容は、

表示するリストを作成する際に、HTMLタグを変数に入れるように改造しました。(赤文字部分)

前回はXMLの要素を操作してリストを作成するようにしていましたが、

XMLの操作は苦手なのでHTMLのソースを変数に格納するようにしました。

<script src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●" type="text/javascript"></script>
<script type="text/javascript">
google.load("feeds", "1");  
function initialize()
{  
 //RSSフィードの取得
 var feed = new google.feeds.Feed("●●読み込みたいフィードのURL●●");  
 
 //取得するフィード数
 feed.setNumEntries(5)  
 
 //実際に読む込む
 feed.load(function(result)
 {  
  
  //読み込めたか判別
  if (!result.error)
  {
   //表示部分を選択
   var container = document.getElementById("feed");
   
   //変数の初期化
   var list = "";
   
   //Feedの処理
    list = '<ul>';
   for (var i = 0; i < result.feed.entries.length; i++)
   {  
    //Feedを一つ抽出
    var entry = result.feed.entries[i]; 
    if(entry.title.match(/^PR:/)) {
    //「PR:」から始まるものがあれば何もしない
    }
    else{
     list += '<li>';
     list += '<a href="' + entry.link + '" target="_blank">' + entry.title + '</a>';
     var strdate = createDateString(entry.publishedDate);
     list += '(' + strdate + ')';
     list += '</li>';

    }
        }
     list += '</ul>';
     container.innerHTML = list;

     }  
   });  
}
//日付の表示方法を変更
function createDateString(publishedDate)
{
 var pdate = new Date(publishedDate);
 var pday = pdate.getDate();
 var pmonth = pdate.getMonth() + 1;
 var pyear = pdate.getFullYear();
 var phour = pdate.getHours();
 var pminute = pdate.getMinutes();
 var psecond = pdate.getSeconds(); 
 //var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
 var strdate = pyear + "-" + pmonth + "-" + pday ;
 return strdate;
}
google.setOnLoadCallback(initialize); 
</script>
<!--表示結果表示する部分-->
<hr size="1" />
<div id="feed"></div>
<hr size="1" />
<!--表示結果表示する部分--> 

 

↓↓実際にうちの社長のアメブロのフィードを読み込んで表示した例↓↓



 

前回同様に

RSSに「PR:」が含まれていなければ新着5件を表示しますが、

新着5件中1件に「PR:」が含まれていた場合は

フィード自体から削除して消すのではなく、省略というか、スキップしているだけなので

表示が4件になります。

 

参考にしたサイト

日付の表示形式の変更 - フィードの取得 - Google AJAX Feed API入門
http://www.ajaxtower.jp/googleajaxfeed/feed/index5.html
日付の表示形式の変更 - フィードの取得 - Google AJAX Feed API入門

 

2009/09/23追記

上記を更に改造↓

Google AJAX Feed APIで最新の記事一覧を表示する。
http://hoshiya.biz/2009/09/google-ajax-feed-api-1.html 


[記事編集]

トラックバック(0)

トラックバックURL:


MovableTypeの標準機能のmt-search.cgiによる検索ですが、

すこぶる遅いので、他の検索方法がないか探してみた。

結構、この話題は多いみたいで、

すぐ見つかった。

 

参考ページ
mt-search.cgiを削除した
http://blog.kumacchi.com/2008/07/mtsearchcgi.html
mt-search.cgiを削除した

 

↓↓上記を参考に作った検索フォーム↓↓(実際に検索できます。)

 

検索がびっくりするほど速いです。

これを作った暴想さんに感謝です。

ココログプロとかTypepadとかMTとかブログ人とかその他のブログサービスとかでもAjaxでバックナンバーを検索するJavaScript: 暴想
http://java.cocolog-nifty.com/blog/2005/12/typepadmtajaxja_c70d.html
ココログプロとかTypepadとかMTとかブログ人とかその他のブログサービスとかでもAjaxでバックナンバーを検索するJavaScript: 暴想


[記事編集]

トラックバック(0)

トラックバックURL:


他のサイトで見たことがあると思いますが、

検索に使用したキーワードをハイライトで見やすくする方法です。

  • Javascript「se_hilite.js」をダウンロードする
  • 自分のサイトに「se_hilite.js」をアップロードする
  • スタイルシート(CSS)にハイライトの色を決めて一部追加をする
  • ハイライト表示をしたいページにタグを挿入する

以上のステップで完了。

詳細は以下の参考ページを参照してください。

 

参考にしたページ

JavaScriptで検索ワードをハイライトする
http://www.magicvox.net/archive/2007/04122238/
JavaScriptで検索ワードをハイライトする


[記事編集]

トラックバック(0)

トラックバックURL:


先日、「Google AJAX Feed APIを使って外部のRSSを読み最近の記事リストを表示するJavascript」を使用してアメーバブログのRSSを読み込み、

新着5件の一覧表示を行いましたが、

アメーバブログ(アメブロ)のRSSは広告(PR:○○~)というのが自動的に入り、

これがすごく邪魔で困っていました。

 

そこで今回はif文を加えて「PR:」から始まるフィードは無視(除く)することにしました。

スクリプト

<script src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●" type="text/javascript"></script>
<script type="text/javascript">
google.load("feeds", "1");  
function initialize()
{  
 //RSSフィードの取得
 var feed = new google.feeds.Feed("●●読み込みたいフィードのURL");  
 
 //取得するフィード数
 feed.setNumEntries(5)
 
 //実際に読む込む
 feed.load(function(result)
 {  
 
  //読み込めたか判別
  if (!result.error)
  {
   //表示部分を選択
   var container = document.getElementById("feed");
  
   //変数の初期化
   var list = "";
  
   //Feedの処理
   for (var i = 0; i < result.feed.entries.length; i++)
   {  
    //Feedを一つ抽出
    var entry = result.feed.entries[i];
 if(entry.title.match(/^PR:/)) {
 //「PR:」から始まるものがあれば何もしない
 }
 else{

    var div = document.createElement("li");  
    var a = document.createElement("a");
    var strdate = createDateString(entry.publishedDate);
    a.href = entry.link;  
          var list = entry.title + " (" + strdate + ")" ;  
          a.appendChild(document.createTextNode(list));  
          div.appendChild(a);  
          container.appendChild(div);  
        }
  
  }  
     }  
   });  
}

//日付の表示方法を変更
function createDateString(publishedDate)
{
 var pdate = new Date(publishedDate);
 var pday = pdate.getDate();
 var pmonth = pdate.getMonth() + 1;
 var pyear = pdate.getFullYear();
 var phour = pdate.getHours();
 var pminute = pdate.getMinutes();
 var psecond = pdate.getSeconds();
 //var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
 var strdate = pyear + "-" + pmonth + "-" + pday ;
 return strdate;
}

google.setOnLoadCallback(initialize);  

 

</script>
<!--表示結果表示する部分-->
<div id="feed"></div>
<!--表示結果表示する部分-->

 

ということで、うちの社長のアメブロフィードを読み込んで

「PR:」を除いた新着情報を表示してみた

↓↓実行結果↓↓



 

ただし、

RSSに「PR:」が含まれていなければ新着5件を表示しますが、

新着5件中1件に「PR:」が含まれていた場合は

フィード自体から削除して消すのではなく、省略というか、スキップしているだけなので

表示が4件になってしまいます。

それを補うスクリプトは今度チャレンジします。

 

 

2009/09/23追記

上記を更に改造↓

Google AJAX Feed APIで最新の記事一覧を表示する。
http://hoshiya.biz/2009/09/google-ajax-feed-api-1.html  


[記事編集]

トラックバック(1)

トラックバックURL:

アメーバブログのRSSから「PR:」の部分を消して表示するスクリプトを一部変更し... 続きを読む

フィード(RSS2.0)を読み込むスクリプト

<script src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●" type="text/javascript"></script>
<script type="text/javascript">
google.load("feeds", "1");  
function initialize()
{  
 //RSSフィードの取得
 var feed = new google.feeds.Feed("●●読み込みたいRSS2.0のURL●●");   
 
 //取得するフィード数
 feed.setNumEntries(5)  
 
 //実際に読む込む
 feed.load(function(result)
 {  
  
  //読み込めたか判別
  if (!result.error)
  {
   //表示部分を選択
   var container = document.getElementById("feed");
   
   //変数の初期化
   var list = "";
   
   //Feedの処理
   for (var i = 0; i < result.feed.entries.length; i++)
   {  
    //Feedを一つ抽出
    var entry = result.feed.entries[i];  
    var div = document.createElement("li");  
    var a = document.createElement("a");
    var strdate = createDateString(entry.publishedDate);
    a.href = entry.link;  
          var list = entry.title + " (" + strdate + ")" ;  
          a.appendChild(document.createTextNode(list));  
          div.appendChild(a);  
          container.appendChild(div);  
        }  
     }  
   });  
}

//日付の表示方法を変更
function createDateString(publishedDate)
{
 var pdate = new Date(publishedDate);
 var pday = pdate.getDate();
 var pmonth = pdate.getMonth() + 1;
 var pyear = pdate.getFullYear();
 var phour = pdate.getHours();
 var pminute = pdate.getMinutes();
 var psecond = pdate.getSeconds(); 
 //var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
 var strdate = pyear + "-" + pmonth + "-" + pday ;
 return strdate;
}

google.setOnLoadCallback(initialize);  

 

</script>
<!--表示結果表示する部分-->
<div id="feed"></div>
<!--表示結果表示する部分--> 

 

 

ということで、うちの社長ブログのフィードを読んでみた。

↓↓結果↓↓

 

 

2009/06/30追記

アメーバブログ(アメブロ)等のフィードでPRなどが入ってしまい、

省略して表示をさせたい場合は「Google AJAX Feed APIを使ってアメーバブログの「PR:」を除く記事一覧を表示するJavascript」をご参照ください。

 

2009/09/23追記

上記を更に改造↓

Google AJAX Feed APIで最新の記事一覧を表示する。
http://hoshiya.biz/2009/09/google-ajax-feed-api-1.html 


[記事編集]

トラックバック(0)

トラックバックURL:


Googleブログ検索でこのサイトhttp://hoshiya.bizを検索。

 

↓実際に検索↓
http://blogsearch.google.co.jp/blogsearch?hl=ja&ie=UTF-8&q=hoshiya.biz&lr=lang_ja

 

↓その検索結果のXML↓
http://blogsearch.google.co.jp/blogsearch_feeds?hl=ja&q=link:hoshiya.biz&lr=lang_ja&ie=utf-8&num=10&output=rss

 

そして、そのXMLを読み込みリストとして表示するスクリプト。

残念ながら現時点では被リンクが少なすぎて1件しかない...。

 

↓実行結果↓


loading

 

 

スクリプト

<script type="text/javascript" src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●"></script>

<script type="text/javascript">
    google.load("feeds", "1"); function initialize() {
    var url = "●●検索対象のURL●●";
    var num = 100;
    // Get Linkbacks from Google Blog Search
    var feed = new google.feeds.Feed("http://blogsearch.google.co.jp/blogsearch_feeds?hl=ja&q=link%3A"+encodeURIComponent(url)+"&output=rss&num="+num+"&lr=lang_ja&ie=utf-8");
 feed.setNumEntries(num);
    feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
    feed.load(function(result) {
        if (!result.error) {
            var items = result.xmlDocument.getElementsByTagName('item');
            var item  = null;
            var entry = null;
            var html  = '<ul id="linkback_list">\n';
            for (var i = 0; i < items.length; i++) {
                entry = [];
                // make simple array from item nodes
                // You can access values like "entry['key']"
                for ( var j=0; j<items[i].childNodes.length; j++ ) {
                    item = items[i].childNodes[j];
                    entry[item.nodeName] = (item.textContent)?item.textContent:item.text;
                }
                html += '<li class="linkback_entries">';
                html += '<a class="linkback_links" href="'+entry['link']+'" rel>'+entry['title']+'</a>';
                html += '<span class="linkback_blogs">('+entry['dc:publisher']+')</sapn>';
                html += '<span class="linkback_dates">'+entry['dc:date'].substring(0,10)+'</sapn>';
                html += '</li>\n';
            }
            html += '</ul>\n';
            document.getElementById("linkbacks").innerHTML = html;
        }
    });
}
google.setOnLoadCallback(initialize);
    </script>
<!--結果を表示する部分-->
<hr size="1" />
<div id="linkbacks">loading</div>
<hr size="1" />
<!--結果を表示する部分-->

 

参考にしたページ

Trackbackをやめて、Google AJAX Feed APIを使って被リンクを表示
http://creazy.net/2009/02/stop_tb_and_start_linkbacks_by_google_ajax_feed_api.html
Trackbackをやめて、Google AJAX Feed APIを使って被リンクを表示


[記事編集]

トラックバック(0)

トラックバックURL:


変数配列に代入されたHTMLソースを

タイマーで一定時間ごとにランダムに表示するスクリプト。

MozShotと併せて、サイトのサムネイルをランダムに表示する例。

表示された画像をクリックすると指定のURLにジャンプできます。

 

変数配列にはタグごと入れるので、

特にアフィリエイトのバナータグなどは会社によって、

タグの仕様が異なる場合に便利です。

 

<script type="text/javascript">

src = new Array();

src[0]='<a href="http://www.google.com" target="_blank"><img src="http://mozshot.nemui.org/shot/large?http://www.google.com" alt="google" /></a>';

src[1]='<a href="http://www.yahoo.co.jp" target="_blank"><img src="http://mozshot.nemui.org/shot/large?http://www.yahoo.co.jp" alt="yahoo" /></a>';

src[2]='<a href="http://jp.msn.com" target="_blank"><img src="http://mozshot.nemui.org/shot/large?http://jp.msn.com/" alt="msn" /></a>';

window.onload=chX;

function chX(){

i=Math.floor(Math.random()*src.length);

document.getElementById("chimg").innerHTML=src[i];

setTimeout("chX()",1000);

}

</script>

<div id="chimg"></div>

 

 

↓↓実際に表示したところ

 


[記事編集]

トラックバック(0)

トラックバックURL:


変数配列に格納された文字「ルパン三世」を

数秒ごとのタイマーによって表示を変更するスクリプト。

 

<script type="text/javascript">

tag = new Array();

tag[0]='ル';

tag[1]='パ';

tag[2]='ン';

tag[3]='三';

tag[4]='世';

window.onload=chT;

function chT(){

 i=Math.floor(Math.random()*tag.length);

 document.getElementById("chTxt").innerHTML=tag[i];

 setTimeout("chT()",1000);

}

</script>

<div id="chTxt"></div>

 

↓↓実際に表示してみたところ

 

 

この方法で、アフィリエイトのタグやバナーの画像、写真などに応用ができます。

Javascriptで数秒ごとにHTMLソースをランダムに変更。」をご参照ください。


[記事編集]

トラックバック(0)

トラックバックURL:


ページにアクセスするごとに、

ランダムに選択されたアフィリエイトのバナーを表示するスクリプト。

Javascriptは初心者ですが、とりあえずは表示に成功。

 

「banner.js」を以下の内容でルートに作成。

(例:http://www.example.com/banner.js)

tag = new Array();

tag[0]='<a href="http://www.example.com/" target="_blank"><img src="http://www.example.com/banner1.jpg" alt="バナー1" border="0" /></a>';

tag[1]='<a href="http://www.example.com/" target="_blank"><img src="http://www.example.com/banner2.jpg" alt="バナー2" border="0" /></a>';

tag[2]='上記同様にバナーのタグを入れる';

i = Math.floor(Math.random()*tag.length);

document.write(tag[i]);

 

HTMLファイルのバナーを表示したい箇所に以下のコードを記述。

(例えば、http://www.example.com/index.htmlの場合)

<script type="text/javascript" src="http://www.example.com/banner.js" charset="utf-8"></script>

 

こでだけでOK。

今後の課題は、一定時間ごとに表示したバナーをランダムに変更できるようにしたいと思います。

 

[今回参考にしたページ]

バナーやアフィリエイトを、jsでランダムに表示させる | Java script、Ajax | 青森県八戸市 ホームページ制作・作成 studio md
http://studiomd.jp/archives/homepage/java-script/randombanner.php
バナーやアフィリエイトを、jsでランダムに表示させる | Java script、Ajax | 青森県八戸市 ホームページ制作・作成 studio md

 

PHPで同じことを行う方法は以下を参照

http://hoshiya.biz/2009/05/php.html 


[記事編集]

トラックバック(1)

トラックバックURL:

ページにアクセスするごとに、 ランダムに選択されたアフィリエイトのバナーを表示す... 続きを読む