人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaScript

http://hoge/rss にアクセスするとRSS2.0で表記されたRSSが表示されます。

このRSSの最新10件を別のページに表示するJavaScriptを書いてください。サーバー事情によりPHPやCGIは使えません。(geocities)

よろしくお願いします。

●質問者: esecua
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:2.0 CGI GeoCities JavaScript PHP
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● 潮澤 昴
●10ポイント

RSS Feed The Search

RSS FeedをJavascriptでウェブページに表示

等をお使い下さい。

◎質問者からの返答

RSSの最新10件を別のページに表示するJavaScriptを書いてください


2 ● okuryu
●10ポイント

タイトルを表示するだけの簡単なサンプルですが。

Windows XP の Firefox 1.5 と Internet Explorer 6.0 で確認しました。

JavaScript

window.onload = function() {

 var r = null;

 try {

 r = new XMLHttpRequest;

 } catch ( e ) {

 try {

 r = new ActiveXObject( "Msxml2.XMLHTTP" );

 } catch ( e ) {

 r = new ActiveXObject( "Microsoft.XMLHTTP" );

 }

 }

 r.onreadystatechange = function() {

 if ( ( r.readyState == 4 ) && ( r.status == 200 ) ) {

 var items = r.responseXML.getElementsByTagName("item");
 var titles = r.responseXML.getElementsByTagName("title");

 if ( items.length > 10 ) {

 var max = 10;

 } else {

 var max = items.length;

 }

 var result = '<ul>';

 for ( var i = 1; i <= max; i++ ) {

 var title = titles[i].childNodes[0].nodeValue;
 result += '<li>' + title + '</li>';

 }

 result += '</ul>';
 document.getElementById( 'result' ).innerHTML = result;

 }

 }

 r.open( 'GET' , 'hoge.xml' , true );
 r.send( null );

};
◎質問者からの返答

こちらも動かないです。


3 ● xkettoshi
●15ポイント

@ITです。URLは適度変えてください

<html><head>

<script></p> <p>var httpRequest = null;</p> <p>function createHttpRequest()</p> <p>{</p> <p> var XMLhttpObject = null;</p> <p> try</p> <p> {</p> <p> XMLhttpObject = new XMLHttpRequest();</p> <p> }</p> <p> catch(e)</p> <p> {</p> <p> try</p> <p> {</p> <p> XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");</p> <p> }</p> <p> catch(e)</p> <p> {</p> <p> try</p> <p> {</p> <p> XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");</p> <p> }</p> <p> catch(e)</p> <p> {</p> <p> }</p> <p> }</p> <p> }</p> <p> return XMLhttpObject;</p> <p>}</p> <p>function parse()</p> <p>{</p> <p> try</p> <p> {</p> <p> if(!(httpRequest.readyState == 4 && httpRequest.status == 200))</p> <p> {</p> <p> return;</p> <p> }</p> <p> else if(httpRequest.responseXML)</p> <p> {</p> <p> var xdoc = httpRequest.responseXML;</p> <p> var items;</p> <p> var itm;</p> <p> var i, n;</p> <p> var title, link, desc;</p> <p> var text = "";</p> <p> var childNodes;</p> <p> var channel;</p> <p> var j;</p> <p> var data = new Array;</p> <p> channel = xdoc.getElementsByTagName("channel")[0];</p> <p> data["title"] = data["link"] = data["description"] = "";</p> <p> childNodes = channel.childNodes;</p> <p> for(j = 0; j < childNodes.length; j++)</p> <p> {</p> <p> if(childNodes[j].text)</p> <p> {</p> <p> data[childNodes[j].nodeName] = childNodes[j].text;</p> <p> }</p> <p> }</p> <p> if(data["title"] && data["link"])</p> <p> {</p> <p> text += "<a href=\"" + data["link"] + "\">" + data["title"] + "</a><br>" + (data["description"] ? data["description"] : "")+ "<br><br>\n";</p> <p> }</p> <br> <p> items = xdoc.getElementsByTagName("item");</p> <p> for(i = n = 0; i < items.length; i++)</p> <p> {</p> <p> childNodes = items[i].childNodes;</p> <p> if(childNodes == null)</p> <p> {</p> <p> continue;</p> <p> }</p> <p> data["title"] = data["link"] = data["description"] = "";</p> <p> for(j = 0; j < childNodes.length; j++)</p> <p> {</p> <p> if(childNodes[j].text)</p> <p> {</p> <p> data[childNodes[j].nodeName] = childNodes[j].text;</p> <p> }</p> <p> }</p> <p> if(data["title"] && data["link"])</p> <p> {</p> <p> text += "   <a href=\"" + data["link"] + "\">" + data["title"] + "</a><br>" + (data["description"] ? data["description"] : "")+ "<br><br>\n";</p> <p> if(n++ == 10)</p> <p> {</p> <p> break;</p> <p> }</p> <p> }</p> <p> }</p> <p> //alert(text);</p> <p> if(text)</p> <p> {</p> <p> document.getElementById("rssview").innerHTML = text;</p> <p> }</p> <p> }</p> <p> }</p> <p> catch(e)</p> <p> {</p> <p> alert("error");</p> <p> throw e;</p> <p> }</p> <p>}</p> <p>function getRSS(url)</p> <p>{</p> <p> try</p> <p> {</p> <p> httpRequest = createHttpRequest();</p> <p> if(httpRequest)</p> <p> {</p> <p> httpRequest.onreadystatechange = parse;</p> <p> httpRequest.open("get", url, false);</p> <p> httpRequest.send(null);</p> <p> }</p> <p> }</p> <p> catch(e)</p> <p> {</p> <p> alert("error");</p> <p> }</p> <p>}</p> <p></script>

</head>

<body onload="getRSS('http://www.atmarkit.co.jp/rss/rss.xml')">

</body>

</html>

◎質問者からの返答

動きません。


4 ● xkettoshi
●25ポイント

<html><head>

<script>

var httpRequest = null;

function createHttpRequest()

{

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 XMLhttpObject;

}

function parse()

{

try

{

if(!(httpRequest.readyState == 4 && httpRequest.status == 200))

{

return;

}

else if(httpRequest.responseXML)

{

var xdoc = httpRequest.responseXML;

var items;

var itm;

var i, n;

var title, link, desc;

var text = "";

var childNodes;

var channel;

var j;

var data = new Array;

channel = xdoc.getElementsByTagName("channel")[0];

data["title"] = data["link"] = data["description"] = "";

childNodes = channel.childNodes;

for(j = 0; j < childNodes.length; j++)

{

if(childNodes[j].text)

{

data[childNodes[j].nodeName] = childNodes[j].text;

}

}

if(data["title"] && data["link"])

{

text += "<a href=\"" + data["link"] + "\">" + data["title"] + "</a><br>" + (data["description"] ? data["description"] : "")+ "<br><br>\n";

}


items = xdoc.getElementsByTagName("item");

for(i = n = 0; i < items.length && n < 10; i++)

{

childNodes = items[i].childNodes;

if(childNodes == null)

{

continue;

}

data["title"] = data["link"] = data["description"] = "";

for(j = 0; j < childNodes.length; j++)

{

if(childNodes[j].text)

{

data[childNodes[j].nodeName] = childNodes[j].text;

}

}

if(data["title"] && data["link"])

{

text += "   <a href=\"" + data["link"] + "\">" + data["title"] + "</a><br>" + (data["description"] ? data["description"] : "")+ "<br><br>\n";

n++;

}

}

//alert(text);

if(text)

{

document.getElementById("rssview").innerHTML = text;

}

}

}

catch(e)

{

alert("error");

throw e;

}

}

function getRSS(url)

{

try

{

httpRequest = createHttpRequest();

if(httpRequest)

{

httpRequest.onreadystatechange = parse;

httpRequest.open("get", url, false);

httpRequest.send(null);

}

}

catch(e)

{

alert("error");

}

}

</script>

</head>

<body onload="getRSS('http://www.atmarkit.co.jp/rss/rss.xml')">

<div id="rssview"></div>

</body>

</html>

◎質問者からの返答

errorが表示されます。


5 ● okuryu
●40ポイント

2の回答者です。

対象となる RSS が同じドメイン下のものという前提での JavaScript を書いたのですが、質問されている対象となる RSS は異なるドメインの外部のものでしょうか。

その場合、 Firefox などのブラウザでは仕様上読み込めないようになっているため、CGI などで一度処理する必要があります。

今回は CGI が使えないとのことなので、解決策としては以下のようなサービスを利用するとうまくいくかもしれません。

どちらも任意のドメイン上の XML データを取得して、JavaScript で扱えるようにしてくれるサービスです。

◎質問者からの返答

なるほど。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ