サポート » プラグイン » LightPopが反映しなくなる

  • 解決済 natsu

    (@natsu)


    本日、javascriptで

    window.onload = function() {}

    が使用されている外部ファイルをヘッダに記述したのですが、LightPopが反映されなくなってしまいました。

    いろいろ検索してみた結果、恐らく「window.onload」を複数使ってしまっているのかな、というところまで辿りついたのですが、LightPopのjsファイル内で検索をかけても引っかかってきません。「onload」で検索すると引っかかってくるのですが、もしそれが原因だとしても自分では解決方法が分かりません。

    どなたかご教示のほど宜しくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 外部ファイルで呼び出している***という関数名と、LightPop内の関数名がバッティングしている可能性がありますね。

    lightpop では、jQuery を使用しています。
    jQuery の中で、window.onload イベントに jQuery.ready という関数を登録していますので、それが無効になってしまっているのかもしれません。

    window.onload イベントに関数を登録する場合は
    window.onload = function() {}
    ではなく、jQuery式に
    jQuery(function(){})
    と記述するようにしてください。

    トピック投稿者 natsu

    (@natsu)

    kurosquare様、wokamoto様

    ご回答ありがとうございます。
    ご教示頂いたとおりに、

    jQuery(function(){})

    に変更してみましたが、なぜか反映はされませんでした。
    使いたいjavascriptは、

    window.onload = function() {
    document.body.innerHTML = document.body.innerHTML.replace(/…/g, "<span style=\"font-family: 'MS Pゴシック'\">…</span>");
    }

    上記のもので、デフォルトでフォントを欧文フォントを指定しているのですが、それだと三点リーダが「…」ではなくピリオド「…」になってしまうので、三点リーダが入力されたら自動的にMS Pゴシックに変換させたいのです。

    これを先ほど

    jQuery(function(){
    document.body.innerHTML = document.body.innerHTML.replace(/…/g, "<span style=\"font-family: 'MS Pゴシック'\">…</span>");
    })

    このように書き換えました。
    そうすると、LightPopは反映するようになったのですが、上記の三点リーダの変換が反映されなくなってしまいました。
    記述方法が間違っているのでしょうか?

    大変お手数をおかけいたしますが、引き続き宜しくお願いいたします。

    こちらの環境では

    jQuery(function(){
    document.body.innerHTML = document.body.innerHTML.replace(/…/g, "<span style=\"font-family: 'MS Pゴシック'\">…</span>");
    })

    でも、動作しました。
    他の箇所で JavaScript エラーが発生しているのでは無いでしょうか?

    ただし、この JavaScript には間違いがあります。
    タグ内(例えば <a href="http://example.com/" alt="三点リーダ:…">三点リーダ:…</a>)の三点リーダも変換してしまうので、おかしな表記になると思います。
    以下のように修正すれば、回避できるかな?

    jQuery(function(){
    document.body.innerHTML = document.body.innerHTML.replace(/(>?[^<…]*)(…+)([^…>]*<?)/g, "$1<span style=\"font-family: 'MS Pゴシック'\">$2</span>$3");
    })

    あと、三点リーダに span タグを付けたいだけであれば、JavaScript でムリヤリやるよりは the_content フィルタをフックして、書き換えてやったほうがスマートです。
    具体的には、以下のコードをお使いのテーマの functions.php に追記すれば、実現できます。

    function replace_3pointlead($content){
    	$content = preg_replace(
    		'/(>?[^<…]*)(…+)([^…>]*<?)/' ,
    		"$1<span style=\"font-family: 'MS Pゴシック'\">$2</span>$3" ,
    		$content);
    	return $content;
    }
    add_filter('the_content', 'replace_3pointlead');

    トピック投稿者 natsu

    (@natsu)

    wokamoto様

    迅速なご対応本当にありがとうございます。
    ご教示頂いた通り、 functions.php に追記することによってちゃんと反映されるようになりました!

    ご丁寧な説明本当に助かりました。
    ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「LightPopが反映しなくなる」には新たに返信することはできません。