人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptのsyntaxhighlighterを使うとき、PJAXの遷移後のページで、ハイライトしたい場合、どうすればいいですか?
ver 3.0.83です。
http://alexgorbatchev.com/SyntaxHighlighter/
ちなみに、自分でhtmlを書いて作った普通のサイトです。
お願いします。

●質問者: Kamesuta
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

PJAX で遷移した後 (pjax:success) に、highlight メソッドを呼ぶ、かな。

$(document).on('pjax:success', function(e, data) {
 SyntaxHighlighter.highlight();
});

Kamesutaさんのコメント
ありがとうございます。 もう1つききますが、Autoloderを使ってる場合、遷移後のページのpreの構文に、対応するる場合、どうすればよいですか?

a-kuma3さんのコメント
Autoloader って、↓のことですか? http://code.google.com/p/jquery-autoloader/ complete で、highlight メソッドを呼べば良いんじゃないかと思います。

Kamesutaさんのコメント
ごめんなさい。 syntaxhighlightrの一緒に入っている、shAutoloader.js です。 お願いします。

a-kuma3さんのコメント
>> syntaxhighlightrの一緒に入っている、shAutoloader.js です。 << へぇ、こんなのができたんですね。 変にソースを読まずに、all メソッドで、って書けば良かった <tt>orz</tt> highlight メソッドではなく、auto メソッドを使ってみてください。 >|javascript| $(document).on('pjax:success', function(e, data) { SyntaxHighlighter.all(); }); ||<

Kamesutaさんのコメント
allではできず、autoでもできませんでした。 highlight()ではできたので、autoloder専用のメソッドを教えてください。 SyntaxHighlighter.autoloader();//←ここってどうすればいいの? SyntaxHighlighter.highlight(); こんなのも試したけど、できませんでした。autoloaderのメソッドを教えてください。

a-kuma3さんのコメント
ごめんなさい。auto は、all の書き間違い。 新しい SyntaxHighlighter のソースも読んでみた。 こんな感じで行けると思う(自信ない)。 >|javascript| $(document).on('pjax:success', function(e, data) { SyntaxHighlighter.autoload( /* 必要な brush の定義 */ ... ); SyntaxHighlighter.all(); }); ||< >> SyntaxHighlighter.autoloader();//←ここってどうすればいいの? << これについては、↓を読むと分かると思う。 http://www.872style.com/872/memo/web/SyntaxHighlighter.php

Kamesutaさんのコメント
pjaxサイトでは、やはり手動で、1つずつ、ていねいに読み込んでいった方がいいのですね。

a-kuma3さんのコメント
あらっ、閉まっちゃった。 autoload の書き方が分からなかったんでしょうか? それとも、書いても期待した通りに動かない?

Kamesutaさんのコメント
autoloadだけをもう一度実行するやり方が分かりません。

a-kuma3さんのコメント
「だけ」っていうのが、よく分からない。 SyntaxHilighter.autoload が呼ばれると、SyntaxHilighter.all の内容を置き換え、brush のスクリプトをロードし始める。 SyntaxHilighter.all を呼ぶと、内部的にフラグが立ち、そのフラグが立っていると、スクリプトのロードが終わったときに brush の指定が入ってる pre を探して、見た目を変えていく。 ぼくがソースを見た 3.0.83 では、見た目を変えた後に動的に読みこんだスクリプトタグを外しているので、ページの遷移をしていなくても、autoload + all をペアで呼んであげれば、PJAX で読み込んだ部分にも、適用されると思うんだけどなあ。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ