プロが教えるわが家の防犯対策術!

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>

A 回答 (2件)

良く意味が分からないのですが、ロード完了時に実行したいなら、window.onloadを使用すればいいのでは?


window.onload=function(){
//ロード完了時に実行させたいこと
};
    • good
    • 0

>外部から動的ロードされたデータ


のロードのタイミングはいつなのでしょうか?
サーバ側で読み込んでから編集して出力しているのか、ajaxなどを利用してクライアント側でロードしているのか?

>body onload は試しましたが駄目でした。
サーバ側で処理を終えているのなら、onloadでも問題ないはずですが、ajaxなどの場合は受信処理が終わってからでないと、まだそのデータが存在しないので当然処理されません。受信処理と合せて行なうか、あるいは、受信処理のcallbackとして実行するようにするかなどが必要でしょう。


しかし、どうもタイミングの問題というよりも
前回の質問( http://oshiete.goo.ne.jp/qa/6612566.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を扱う場合だけは、うまく動作する可能性がありますが…)

根拠なしの推測では、こちら(↑)の方が怪しそうな気がしますので、御確認ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!