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;

我要做的是创建一个函数,该函数将在每个加载更多笔记的实例中调用,它将这些新笔记作为变量,在它们上运行一个函数,用符号替换一些文本,然后将它们附加到现有的同位素设置,例如使用无限滚动加载新页面时。

此链接是我正在处理的博客中的永久链接页面之一,您可以在其中看到我在说什么。是来自 tumblr 文档的参考资料。

我会很感激任何想法,因为它们可能会引导我朝着正确的方向前进!

4

1 回答 1

2

好吧,事实证明我自己的方向是正确的,只是编写了一个太乱的代码,但它现在可以工作,所以我将详细说明如何,以便其他人可以使用这些信息:

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

     //code goes here!

};

我把它放在任何其他函数之外,我认为这个术语是“在全局命名空间中”,所以我对加载新笔记时需要调用的每个函数都做了。

要将其附加到同位素墙(我想它也适用于砌体,只是更改了一些关键字),我将其添加到代码中:

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

这将选择所有尚未被 Isotope 定位的音符元素(插件将类“isotope-item”添加到它处理的每个项目)。这将只留下新音符的选择。

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

最后是这个,它附加了之前定义的新笔记,然后运行一个名为 introNote 的函数,我在它们准备好后将它们淡入。

于 2012-04-18T13:52:31.640 回答