サポート » プラグイン » Ajax非同期通信でSyntaxHighlighterが機能しない

  • 解決済 eijiy

    (@eijiy)


    Ajax非同期通信で、前や次のページを開くとWordPressのプラグインSyntaxHighlighter Evolvedが機能しないのは何故でしょうか。また解決策はあるのでしょうか。

    どなたかご教授頂けないでしょうか。

    宜しくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 最初にページを読み込み終わったタイミングでSyntaxHighlighterが起動して
    preタグを置換しているので、それ以降に現れたpreタグはもう一度SyntaxHighlighterを起動して置換しない限りそのままです。
    Ajaxで前や次のページを開く動作をどうやって実現しているのかは分かりませんが、非同期通信でページを読み込み終わったあとにSyntaxHighlighter.all();を再度起動する必要があると思います。

    トピック投稿者 eijiy

    (@eijiy)

    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();
    });

    トピック投稿者 eijiy

    (@eijiy)

    折角教えて頂いたんですが駄目でした。

    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のなかにシンタックスハイライタが吐き出すコードを全部いれてしまえばなんとか動くと思います。上で追加してるのは必要と思われる一部なので…。

    トピック投稿者 eijiy

    (@eijiy)

    そうですか。
    今後の目標として勉強します。

    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「Ajax非同期通信でSyntaxHighlighterが機能しない」には新たに返信することはできません。