2

テーマ内のメモの外観を操作するスクリプトを作成しました。これは、ページと共に読み込まれるメモに適しています。より多くのメモを読み込もうとすると問題が発生します - それらに対してスクリプトを再実行する必要があります - 私の質問は、どうすればそれを行うことができますか?

これは、追加のメモを読み込むときに tumblr が実行するスクリプトです (これは onclick イベントです)。

if (window.ActiveXObject) var tumblrReq=new ActiveXObject('Microsoft.XMLHTTP'); 
else        
if(window.XMLHttpRequest)    var tumblrReq=new XMLHttpRequest();        
else  return false;         
tumblrReq.onreadystatechange = function () {
if (tumblrReq.readyState==4) {      
    var notes_html = tumblrReq.responseText.split('<!-- START '+'NOTES -->')[1].split('<!-- END '+'NOTES -->')[0];
if (window.tumblrNotesLoaded)
    if (tumblrNotesLoaded(notes_html)==false)
        return;         
var more_notes_link=document.getElementById('more_notes_20767443750');
var notes = more_notes_link.parentNode;
notes.removeChild(more_notes_link);
notes.innerHTML+=notes_html;
if (window.tumblrNotesInserted)
    tumblrNotesInserted(notes_html);    
}
};

tumblrReq.open('GET','/notes/20767443750/iRC0TZaQr?from_c=1334227072',true);
tumblrReq.send();
return false;

私がやろうとしているのは、より多くのメモをロードするたびに呼び出される関数を作成し、それらの新しいメモを変数として取り、テキストを記号に置き換える関数を実行し、それらを追加することです無限スクロールで新しいページをロードするときのように、既存のアイソトープ設定。

このリンクは、私が取り組んでいるブログのパーマリンク ページの 1 つです。ここで、私が話していることを確認できます。これはtumblr docsの参考資料です。

正しい方向に私を導くかもしれないので、どんな考えでも感謝します!

4

1 に答える 1

2

さて、私は自分自身で正しい方向に進んでいて、あまりにも面倒なコードを作成しただけであることが判明しましたが、今では機能するので、他の人が情報を使用できるように方法を詳しく説明します。

function tumblrNotesLoaded(notes_html){  //this will be called when loading notes

     //code goes here!

};

私はそれを他の関数の外側に配置しました。用語は「グローバル名前空間内」であると思います。したがって、新しいメモをロードするときに呼び出す必要があるすべての関数に対して行いました。

それを Isotope の壁に追加するために (いくつかのキーワードを変更して、Masonry にも適用されると思います)、これをコードに追加しました。

var newtmbnotes =  $("li.note:not(.isotope-item)");

これにより、Isotope によって配置されていないすべてのノート要素が選択されます (プラグインは、処理したすべてのアイテムにクラス「isotope-item」を追加します)。これにより、新しいノートのみが選択されたままになります。

$('ol.notes').isotope( 'appended', newtmbnotes, introNote() );

そして最後に、以前に定義された新しいノートを追加し、準備ができたらフェードインするために作成した introNote という関数を実行します。

于 2012-04-18T13:52:31.640 に答える