最初にページを読み込み終わったタイミングでSyntaxHighlighterが起動して
preタグを置換しているので、それ以降に現れたpreタグはもう一度SyntaxHighlighterを起動して置換しない限りそのままです。
Ajaxで前や次のページを開く動作をどうやって実現しているのかは分かりませんが、非同期通信でページを読み込み終わったあとにSyntaxHighlighter.all();
を再度起動する必要があると思います。
umbrella_processさん、返信ありがとうございます。
Ajax非同期通信は、コリスで紹介されていた簡単なjQueryのコードを採用しています。
jQuery(function(){
jQuery("#nav-above div a,#nav-below div a").live('click',function(e){
e.preventDefault();
if ( !jQuery(this).filter('[href*=wordpress]').length ){
var link = jQuery(this).attr("href");
jQuery("#container").load(link+' #content');
}
});
});
if文は、取り敢えずSyntaxHighlighterを使っている記事があるカテゴリーを除外する為に追加しました。その為そのカテゴリーの記事はページ送りが出来なくなっています。
それで「SyntaxHighlighter.all();を再度起動する必要がある」と言う事ですが、どうしたらいいのでしょうか。宜しかったらご教授ください。
なるほど乱暴なコードだな…Javascriptオフでも遷移できるからある意味親切か…。
6行目を以下に差し替えれば多分動くと思いますが、スクリプトエラーになる可能性もあるのでとりあえず試してみてください。
jQuery("#container").load(link+' #content',function(){
SyntaxHighlighter.all();
});
折角教えて頂いたんですが駄目でした。
jQuery(function(){
jQuery("#nav-above div a,#nav-below div a").live('click',function(e){
e.preventDefault();
//if ( !jQuery(this).filter('[href*=wordpress]').length ){
var link = jQuery(this).attr("href");
jQuery("#container").load(link+' #content',function(){
SyntaxHighlighter.all();
});
//}
});
});
やっぱり難しいです。
余談ですが、Ajax化されたテーマってないんでしょうか。
SyntaxHighlighterは外せないので困りました。
ここで具体的なコードを提示して欲しいとまでは言いませんが、これは何とかなると思われますか?可能性があれば追い続けてみたいと思います。
必ずなんとかなると思います。
あんまり良くないですが、functionのなかにシンタックスハイライタが吐き出すコードを全部いれてしまえばなんとか動くと思います。上で追加してるのは必要と思われる一部なので…。