2004年06月23日

ブログタイトルを読み込む3

ブログタイトルを読み込む2 に引き続き「ブログタイトルを読み込む」シリーズ。 今日は、ほかのサイトのブログも読み込んでみる。ってことで、古籏さんのところの最新ブログタイトルを読んで見ます。ただし、IEではセキュリティの調整が必要かもしれないことと、Mozではできません(たぶんprefをいじらないといけないような。。。)。ちょと残念。で、ソースはコメントへ。

*Win IEでセキュリティを調整する方法は、メニューから[インターネットオプション]-[セキュリティ]- [レベルのカスタマイズ]--その他--[ドメイン間でのデータ ソースのアクセス]の チェックを「無効にする」ではなく「ダイアログを表示する」か「有効にする」にしておくことです。 安全と思われる環境以外では「ダイアログを表示する」がお勧めかもしれません。もちろん、私は責任を持てませんが(^^;;、一応これならドメイン間のアクセスが発生するだびにダイアログで確認してくれます。

*あと、当然ですが、同じ[レベルのカスタマイズ]でActiveXを使えるようにしておく必要があります。これもやはり安全のため「ダイアログを表示する」を選んでおくのがよいかもしれません。

ま、自分で書いたjsを自分のために使う分にはめんどくさいんですけどね(^^;;;



ブログタイトルを読み込みます
投稿者 tato : 2004年06月23日 23:50 | トラックバック
コメント

>これもやはり安全のため「ダイアログを表示する」
>を選んでおくのがよいかもしれません。

と、書きましたが根気のある人以外はだめかもしれません。いまどきはActiveXを使っているページばかりだということをダイアログが丁寧に教えてくれます(^^;;;

わたしは、根負けして「有効」に戻しました。

Posted by: 高橋登史朗 : 2004年06月28日 17:04

livedoor側にもatomが用意されていることを発見(^^;。。。無駄なことしていました。じゅげむもJavaScriptを使えるようなので、そのうち、そのあたりも調べて直します。

Posted by: 高橋登史朗 : 2004年06月27日 18:25

ほかのサイトのブログタイトルを読み込む ソース
■2004.06.24 2番目につくったバージョン
----------------------------------------
最初に作ったバージョンのxdoc.urlがMozでエラーになったので。。。

<script type="text/javascript">
<!--
/*========================================================== 
//クロスブラウザ load関数

  引数  : url    XMLファイルのurl
          func   読み込み成功時の起動関数名
  戻値  : 読み込まれたXMLノードツリー
  例    : loadFile( 'data.xml', func1 )
         function func1(){alert('test')}
  Support http://game.gr.jp/js/
*/

function loadFile(url,func)
{
  if(document.getElementById){
    if (window.ActiveXObject)
    {
      var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
          xmlDoc.async = false
          if(xmlDoc.load(url)){func(xmlDoc)}
    } else if ( document.implementation && 
                document.implementation.createDocument )
    {
      var xmlDoc = document.implementation.createDocument("","",null)
          xmlDoc.onload = function (){func(xmlDoc)}
          xmlDoc.load(url)
    }
    return xmlDoc
  }
}
/*==========================================================*/

//読み込んだXMLのデータをもとにHTMLへ書き出す
function writeXMLData3(xdoc)
{
  
  var listLen = 10 //表示件数 wktitle.length
  var ns_dc   = "http://purl.org/dc/elements/1.1/"

  
  //XML内の取り出したいタグの配列を作る
  var wktitle = xdoc.getElementsByTagName("title")
  
    //livedoorの.rdfとMTのatom.xmlをスイッチ
    if(wktitle[0].firstChild.nodeValue.indexOf("OpenSpace")!=-1) 
         var site = "livedoor"
    else var site = ""

  if(site=="livedoor") 
    var wkmodified = xdoc.getElementsByTagName("dc:date")
  else
    var wkmodified = xdoc.getElementsByTagName("modified")

  if(document.all){
    var wksubject = xdoc.getElementsByTagName("dc:subject")
  } else {
    var wksubject = xdoc.getElementsByTagNameNS( ns_dc ,"subject")
  }
  
  //書き出すためのdiv
  wkdiv3 = document.getElementById("writeXMLDataDiv3")
  wkdiv3.innerHTML=""

  //"title"タグが出てきた順に処理する
  for( i = 1 ; i < listLen + 1 ; i++ )
  { 
    if ( wktitle.length <= i ) break;
    //urlを取り出す
    var wklink     = xdoc.getElementsByTagName("link")[i]
    if(site=="livedoor") 
      var wklinkHref = wklink.firstChild.nodeValue
    else 
      var wklinkHref = wklink.attributes.getNamedItem("href").nodeValue

    //各タグ内のfirstChildのデータだけをinnerHTMLで書き出す
    wkdiv3.innerHTML += '<font size=-1>'
                    +  '<a href="'+ wklinkHref +'">'
                    +  '<b>[' + wksubject[(i-1)].firstChild.nodeValue +'] </b>'
                    +   wktitle[i].firstChild.nodeValue 
                    +  '</a><br />'
                    +  wkmodified[i].firstChild.nodeValue 
                    +  '</font><br>'
  }
  wkdiv3.innerHTML += '<hr>'
}

//-->
</script>
<input type   = "button" 
       value  = "Myブログタイトル読み込み 最新の10件"
       onclick= "loadFile('<br>">http://jsgt.org/mt/01/atom.xml',writeXMLData3)"><br>
<input type   = "button" 
       value  = "古籏さんのブログタイトル読み込み 最新の10件"
       onclick= "loadFile('<br>">http://blog.livedoor.jp/openspc2/index.rdf',writeXMLData3)"><br>
<input type   = "button" 
       value  = "クリア"
       onclick= "if(window.wkdiv3)wkdiv3.innerHTML=''">

<div id="writeXMLDataDiv3">ブログタイトルを読み込みます</div>

Posted by: 高橋登史朗 : 2004年06月24日 01:21

ほかのサイトのブログタイトルを読み込む ソース
■2004.06.24 最初につくったバージョン
----------------------------------------
livedoorの.rdfとMTのatom.xmlをクロスにするのに苦労してます。が、なりゆきでこうなっていますけど、MTには。rdfも用意されているので、そっちでやればよいはず...(^^;;

ただ、どうせatom準拠は優先したいし。。。ってことでのトライアルです。ま、いずれにしても、そのうちブログ別に分岐を整理しようっと。

<script type="text/javascript">
<!--
/*========================================================== 
//クロスブラウザ load関数

  引数  : url    XMLファイルのurl
          func   読み込み成功時の起動関数名
  戻値  : 読み込まれたXMLノードツリー
  例    : loadFile( 'data.xml', func1 )
         function func1(){alert('test')}
  Support http://game.gr.jp/js/
*/

function loadFile(url,func)
{
  if(document.getElementById){
    if (window.ActiveXObject)
    {
      var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
          xmlDoc.async = false
          if(xmlDoc.load(url)){func(xmlDoc)}
    } else if ( document.implementation && 
                document.implementation.createDocument )
    {
      var xmlDoc = document.implementation.createDocument("","",null)
          xmlDoc.onload = function (){func(xmlDoc)}
          xmlDoc.load(url)
    }
    return xmlDoc
  }
}
/*==========================================================*/

//読み込んだXMLのデータをもとにHTMLへ書き出す
function writeXMLData3(xdoc)
{

  //livedoorの.rdfとMTのatom.xmlをスイッチ
  if(xdoc.url.indexOf("livedoor")!=-1) 
       var site = "livedoor"
  else var site = ""
  
  var listLen = 10 //表示件数 wktitle.length
  var ns_dc   = "http://purl.org/dc/elements/1.1/"

  //XML内の取り出したいタグの配列を作る
  var wktitle = xdoc.getElementsByTagName("title")
  if(site=="livedoor") 
    var wkmodified = xdoc.getElementsByTagName("dc:date")
  else
    var wkmodified = xdoc.getElementsByTagName("modified")

  if(document.all){
    var wksubject = xdoc.getElementsByTagName("dc:subject")
  } else {
  if(site=="livedoor") 
    var wksubject = xdoc.getElementsByTagNameNS( ns_dc ,"subject")
  }
  
  //書き出すためのdiv
  wkdiv3 = document.getElementById("writeXMLDataDiv3")
  wkdiv3.innerHTML=""

  //"title"タグが出てきた順に処理する
  for( i = 1 ; i < listLen + 1 ; i++ )
  { 
    if ( wktitle.length <= i ) break;
    //urlを取り出す
    var wklink     = xdoc.getElementsByTagName("link")[i]
    if(site=="livedoor") 
      var wklinkHref = wklink.firstChild.nodeValue
    else 
      var wklinkHref = wklink.attributes.getNamedItem("href").nodeValue

    //各タグ内のfirstChildのデータだけをinnerHTMLで書き出す
    wkdiv3.innerHTML += '<font size=-1>'
                    +  '<a href="'+ wklinkHref +'">'
                    +  '<b>[' + wksubject[(i-1)].firstChild.nodeValue +'] </b>'
                    +   wktitle[i].firstChild.nodeValue 
                    +  '</a><br />'
                    +  wkmodified[i].firstChild.nodeValue 
                    +  '</font><br>'
  }
  wkdiv3.innerHTML += '<hr>'
}

//-->
</script>
<input type   = "button" 
       value  = "Myブログタイトル読み込み 最新の10件"
       onclick= "loadFile('<br>">http://jsgt.org/mt/01/atom.xml',writeXMLData3)"><br>
<input type   = "button" 
       value  = "古籏さんのブログタイトル読み込み 最新の10件"
       onclick= "loadFile('<br>">http://blog.livedoor.jp/openspc2/index.rdf',writeXMLData3)"><br>
<input type   = "button" 
       value  = "クリア"
       onclick= "if(window.wkdiv3)wkdiv3.innerHTML=''">

<div id="writeXMLDataDiv3">ブログタイトルを読み込みます</div>

Posted by: 高橋登史朗 : 2004年06月24日 00:20
コメントする









名前、アドレスを登録しますか?