• 締切済み

PHP requireの後にJS実行

PHPで外部サイトからニュースを切り出して表示させているのですが ニュースを切り出した箇所にURLを改変するJavaScriptを組み込んでいます。 静的ページでJavaScriptを稼働させると正常に動作して指定箇所のURLを書き換えます。 しかしPHPで外部から読み込ませると正常に動作してくれません。 外部から動的ロードされたデータに対してJavaScriptを動作させるにはどうしたら良いでしょうか? body onload は試しましたが駄目でした。 何方かお力添えをお願い致します。 【現在のソース】 ※動的に読み込んだニュースデータの相対参照URLに指定ドメインを付与したいです。 <!-- 動的ロード箇所 --> <ul id="news"> <a href="/news/0123456789.html"></a> </ul> <!-- ここからURL書き換えscripts--> <script type="text/javascript"> kitou(); function kitou() { var a = document.getElementById('news').getElementsByTagName('a'); var i = 0; var output; for( i = 0; i < a.length; i++ ) { a[i].href = a[i].href.replace( document.domain, 'www.google.co.jp' ); } } </script>

みんなの回答

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.2

良く意味が分からないのですが、ロード完了時に実行したいなら、window.onloadを使用すればいいのでは? window.onload=function(){ //ロード完了時に実行させたいこと };

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>外部から動的ロードされたデータ のロードのタイミングはいつなのでしょうか? サーバ側で読み込んでから編集して出力しているのか、ajaxなどを利用してクライアント側でロードしているのか? >body onload は試しましたが駄目でした。 サーバ側で処理を終えているのなら、onloadでも問題ないはずですが、ajaxなどの場合は受信処理が終わってからでないと、まだそのデータが存在しないので当然処理されません。受信処理と合せて行なうか、あるいは、受信処理のcallbackとして実行するようにするかなどが必要でしょう。 しかし、どうもタイミングの問題というよりも 前回の質問( http://okwave.jp/qa/q6612566.html )のつづきだとするならば、そちらの質問文で >>『 データ抜き出し元が相対参照でURLが記述されている為 』 となっているのに対し、ご提示のスクリプトだとドメイン部分を差し替える処理になっているので、処理は実行されているけれど『相対参照記述されているurlが正しく変更されていない』だけのようにも想像されます。 オリジナルのHTMLソースが  <a href="/news/6548s.html"> のときに、読み込み後のa.hrefの値が「 ttp://aaa.bb.jp/xxx/yyy/news/6548s.html」を示すとして、このaaa.bb.jp部分だけ変更したところで、「xxx/yyy/」の部分がもともとの参照とは違っているはずではないでしょうか?(ドメイン直下のurlを扱う場合だけは、うまく動作する可能性がありますが…) 根拠なしの推測では、こちら(↑)の方が怪しそうな気がしますので、御確認ください。

関連するQ&A

  • HTML ページ内のリンクURLに特定の文字を足す

    現状として<div id="kitou">~</div>をPHPで別サイトからニュース欄抜き出して表示しています。 ニュース欄のデータ抜き出し元が相対参照でURLが記述されている為、リンクをクリックすると  自分のサイトドメイン+/news/6548s.html となってしまいます。 ジャバスクリプトで○○○に当たる箇所にデータ抜き出し元サイトのドメインを入れたいのですが 上手に出来ません。 例:<a href="○○○/news/6548s.html"> 現在HPに書いてる内容は下記の通りです。 <div id="kitou">    <ul id="news"> <li> <a href="/news/6548s.html">ニュースを見るにはクリック</a> </li> </ul> </div> 何方かお力添えをお願いいたします。

  • スクリプトで<div id="links">

    下記スクリプトで<div id="links"></div>のところを 開いた瞬間 <ul> <li><a href="http://foo.com/">foo</a></li> <li><a href="http://bar.com/">bar</a></li> </ul> に変換したいのですがうまくいきません どこをどのように変更すれば変換されるのでしょうか 【スクリプト】 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script type="text/javascript"> var URL = new Array("http://foo.com/","http://bar.co.jp/"); var TITLE = new Array("foo","bar"); // 表示用コンテナ var container = document.getElementById('links'); // リセット container.innerHTML=''; var ul=document.createElement('ul'); container.appendChild(ul); for(var i=0;i<URL.length;i++){ var li=document.createElement('li'); var a=document.createElement('a'); // 'href'属性の設定 a.setAttribute('href',URL[i]); // ラベル a.appendChild(document.createTextNode(TITLE[i])); li.appendChild(a); ul.appendChild(li); } </script> </head> <body> <div id="links"></div> </body> </html>

  • 外部ファイル(js)の呼び出し方法を教えてください。

    諸先輩方に、また質問させて下さい。 皆様のお力をお借りしjavascriptを利用してリンク先を変更させる事を解決する事が出来ましたが 外部呼出し(js)した場合、エラーが起こってしまいます。 他のjsファイルの場合は、何事も無く表示されるのですが、今回のリンク先変更という 変わった事をするのは初めての為、何が原因なのか全く解かりません。 jsに載せたいのは以下のスクリプトです。また表示させたいのはhtmlのテーブル内です。 恐らくですが・・テキストフォーム等が一緒だから駄目なのでしょうか・・・。 その場合の解決方法も教えていただければと思います。 呼び出すjsファイル例 <script language="javascript" src="change.js"> ======= <script> function change(){ var change=document.getElementById("change"); var tags=document.getElementsByTagName("a"); for(var i=0;i<tags.length;i++){ var url="http://aaa.bbb.ccc/"; var url2="?ddd="; var url3="eee"; var url4="&fff="; if(tags[i].href.match(url)){ tags[i].href=url+url2+url3+url4+change.value; }; } } </script> <a href="http://aaa.bbb.ccc/?ddd=eee&fff=xxxxx" target="_blank"> <img src="http://aaa.bbb.ccc/image/ddd.gif"></a> <br> <input type="text" id="change"><input type="button" value="変換" onclick="change()"> 以上です。宜しくお願いします。

  • JavaScriptのどこが間違いか教えてください。

    JavaScript初心者です。 以下のJavaScriptの中に間違った記述はありますか? ブログの更新情報をHPに載せるためのもので、 雑誌に書いてあったものを手打ちしたのですが、うまくいきません。 このJavaScriptのどこかに間違いがあると思っているのですが、 どなたかご指摘いただけませんでしょうか? 他に必要な情報はありますかね? <script type="text/javascript"> window.onload = function(){ //ロード画像の表示 $('rssbox').innerHTML = '<div style="text-align: center; margin: 50px 0"><img src="images/loadinfo.net.gif" width="24" height="24" alt="ロード中です" /></div>'; var url = "rss.php"; var http = new JKL.ParseXML(url); var output = '<ul>'; var func = function(data){ for(var i=0; i<=5; i++){ output += '<li><a href="' + data.rss.channel.item[i].link + '">' + data.rss.channel.item[i].title + '</a></li>'; } output += '</ul>'; $('rssbox').innerHTML = output; }; http.async(func); http.parse(); } </script>

  • 各ページごとにjsで表示内容を変更したい

    ページごとにディレクトリ名を判別して表示内容を変更するスクリプトを書きたいのですが、現状ieでのみ動作が不安定です。yuga.jsに組み込む形で記述しています。 //script------------------------ var filePath = location.href; var a = filePath.split('://'); schema = a[0]; var d = a[1].split('/'); host = d.shift(); var f = d.pop(); var dirs = d; if(dirs == 'hoge'){ var target = '<li><a href="..\/hoge\/index.html">hoge1<\/a><\/li>' + '<li><a href="..\/hoge\/hoge2.html">hoge2<\/a><\/li>' + '<li><a href="..\/hoge\/hoge3.html">hoge3<\/a><\/li>' } document.getElementById('listWrap').lastChild.innerHTML(target); //html----------------------------- <div id="listWrap"> <img src="./images/listTitle.jpg" alt="" width="**" height="**" /> <ul id="list"></ul> </div> 上記スクリプトを外部から読み込んでonloadで実行していますが、ieでは document.getElementById('listWrap')がnullを返すことが多く、表示される場合とされない場合があります。 ご教授よろしくお願いします。

  • JavaScriptを最後に実行するには?

    JavaScriptでリンクをランダムに表示するようにしたところ、 少し表示が遅く感じるようになったため、 最後にJavaScriptを実行するようにonloadイベントを使って [外部(JavaScript)ファイル] <!-- window.onload = function onload(){ var random = Math.floor(Math.random() * 3); if(random == 0) document.write('<a href="URL1">サイト名1</a>'); else if(random == 1) document.write('<a href="URL2">サイト名2</a>'); else if(random == 2) document.write('<a href="URL3">サイト名3</a>'); }; //--> [HTMLファイル内] <script type="text/javascript" src="./フォルダ名/ファイル名.js"></script> のように書いて試しましたが、真っ白なページにこのスクリプトの内容だけが表示されてしまいます。 "window.onload = function onload{"と、最後の"};"の部分を追加するまでは普通に動いていました。 また、ページ内に、別の外部ファイルも含めて同じようなものを複数組み込みたいと思っています。 この方法でなんとか表示したいのですが、 別の方法も含め、情報をいただきたいです。 わかりにくいところがあれば補足します。 よろしくお願いします。

  • Google feed API の外部jsファイル化

    Google feed API をつかって、 rssリーダーを作って実験しているのですが、 以下のjavascript部分を外部jsファイルすると、 動作しなくなってしまい困っています。 javascriptには、外部js化が出来るものと 出来ないものがあるのでしょうか? どなたかご教授おねがいいたします。 <script type="text/javascript"> function load() { var feed = [ {title:'xxx', url:'http://xxx.com'} ]; var options = { numResults : 3, stacked : true, displayTime : 7000, fadeOutTime : 500, linkTarget : google.feeds.LINK_TARGET_BLANK } new GFdynamicFeedControl(feed, "feedControl", options); } google.load("feeds", "1"); google.setOnLoadCallback(load); </script>

  • javascriptとCSSを使ってのドロップダウンメニュー作成

    CSSとJavaScriptを使って ドロップダウンメニューを作ろうと思っているのですが JavaScriptがうまく作動していないためか FireFoxでは表示されるのですが IE6では動きません。 ご教授お願い致します。 ■index.html <head> <script src="javascript/menu.js" type="text/javascript"></script> </head> <div id="nav"> <ul> <li id="category"><a href="~">category</a> <ul> <li><a href="~">Overview</a></li> <li><a href="~">Overview</a></li> </ul> <ul> <li id="category"><a href="~">category</a> <ul> <li><a href="~">Overview</a></li> <li><a href="~">Overview</a></li> </ul> </div> ■menu.js function menuHover() {var menuItems = d.getElementById("nav").getElementsByTagName("li"); for (var i = 0, miL = menuItems.length; i < miL; i++) { menuItems[i].onmouseover = function() { this.className = "mnhover"; } menuItems[i].onmouseout = function() { this.className = ""; } window.onload = menuHover();

  • JSONPを処理するにはどうすればいいですか?

    http://www.baldanders.info/spiegel/remark/archives/000222.shtml このページの下部のサンプルスクリプトを function getjsonp(url){ で囲ってurlを渡してJSONPデータを処理しようとしたのですが、 hundler is not defined とエラーが出てしまいます。 サンプルスクリプトのそのままのコードでは動くのです。 オブジェクト指向がよくわかっていないのでどうすればいいか、識者の方教えてください。 宜しくお願いします。 下記がエラーするスクリプトです。 <script type="text/javascript" src="/js/jsr_class.js"></script> <div id="bookmark"></div> <script type="text/javascript"> var url ='http://del.icio.us/feeds/json/spiegel?callback=hundler'; getjsonp(url); function getjsonp(url){ var oJsr = new JSONscriptRequest(url); oJsr.buildScriptTag(); oJsr.addScriptTag(); function hundler(data) { var ul = document.createElement('ul'); for (var i=0, post; post = data[i]; i++) { var li = document.createElement('li'); var a = document.createElement('a'); a.setAttribute('href', post.u); a.appendChild(document.createTextNode(post.d)); li.appendChild(a); ul.appendChild(li); } document.getElementById('bookmark').appendChild(ul); oJsr.removeScriptTag(); } } </script>

  • これをOperaでも動くようにしたい

    http://programming-magic.com/?id=158 こちらの function(){ var l = document.getElementsByTagName("A"); for(var i=0; i<l.length; i++){ var a = l[i]; if(a.href.indexOf('javascript:',0)){ var e = /*@cc_on!@*/0; if(e){//IE専用 a.href = 'javascript: (function(){location.href = "'+a.href+'";})();'; } else{//Firefox、Opera、Safari a.href = 'data:text/html;charset=utf-8,'+encodeURIComponent('<script type="text/javascript"><!--\ndocument.write(\'<meta http-equiv="refresh" content="0;url='+a.href+'">\');// --><'+'/script>'); } } } } を、Operaでも動くようにできませんでしょうか

専門家に質問してみよう