dポイントプレゼントキャンペーン実施中!

サイト内の各ページ上部に、Ajaxで共通のメニュー部分.htmlを読み出し、表示しています。
参考:AjaxでIFRAME的な表示をやってみる
http://bizcaz.com/archives/2006/11/13-000253.php
参考:階層メニューにJavaScriptで書き換え
http://www.dhtmlgoodies.com/index.html?whichScri …

<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="ajaxcontents.js"></script>
<script type="text/javascript" src="ListbasedDHTMLmenu.js"></script>
</head>
<body>
<span id="ajax_content_block"></span>
<script type="text/javascript">
<!--
ajax_content_onload_get('メニュー部分.html','','ajax_content_block','ajax_content_progress');
//-->
</script>
<div>
本文
</div>
</body>
</html>

ajaxcontents.jsでメニュー部分.htmlを読み出しListbasedDHTMLmenu.jsで階層メニューに書き換えています。
"dhtmlgoodies_menuObjはNullまたはオブジェクトではありません" のエラーが出て、階層メニュー部分が表示されません。
dhtmlgoodies_menuObjは階層メニュー書き換えのListbasedDHTMLmenu.jsで使われています。
ページ読み出しjavascript完了後に、ページ書き換えjavascriptを実行すればと思っているのですが、
方法の検討がつきません。

if ( location.search.indexOf("1") == -1 ) {
setTimeout("_reload()",100);
}
function _reload() {
location.href = location.href + "?1";
}

↑でリロードさせて見たのですが、バックすると表示されなくなります。

すいませんがアドバイスをお願いいたします。

A 回答 (1件)

ajaxcontents.jsの


-----------
var myAjax = new Ajax.Request(url, {
method: 'get',
parameters: pars,
onComplete: ajax_content_complete
});
-----------
という部分の「onComplete: ajax_content_complete」が読み込み完了時に実行する関数を設定している場所。なのでajax_content_complete関数内に処理を追加するといいかも。

ListbasedDHTMLmenu.jsは最後で
-----------
window.onload = initDhtmlGoodiesMenu;
-----------
として(Ajaxでない)ページ読み込み完了時にすぐに実行されてしまっているのでエラーとなるんですよね。

これを消してinitDhtmlGoodiesMenuをajax_content_complete内で実行するといける・・・かも。
    • good
    • 0
この回答へのお礼

教えていただいたとおりにしたら、できました!
本当に助かりました。
ありがとうございました!!

お礼日時:2007/08/30 05:45

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