我制作了一个脚本来操纵主题中笔记的外观,这对于随页面加载的笔记效果很好。当尝试加载更多笔记时出现问题 - 我需要在它们上重新运行我的脚本 - 我的问题是我该怎么做?
这是 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;
我想做的是创建一个函数,每次加载更多注释时都会调用该函数,该函数会将这些新注释作为变量,在它们上运行一个函数,用符号替换一些文本,然后将它们附加到现有的同位素设置中,就像使用无限滚动加载新页面时一样。
This link here是我正在开发的博客的永久链接页面之一,您可以在其中看到我正在谈论的内容。 Here是来自 tumblr 文档的引用资料。
我很感激任何想法,因为它们可能会引导我走向正确的方向!
最佳答案
好吧,事实证明我自己的方向是正确的,只是编写了一个过于困惑的代码,但现在它可以工作了,所以我将详细说明如何操作,以便其他人可以使用这些信息:
function tumblrNotesLoaded(notes_html){ //this will be called when loading notes
//code goes here!
};
我将它放在任何其他函数之外,我认为该术语是“在全局命名空间中”,因此我对加载新笔记时需要调用的每个函数都做了处理。
为了将其附加到同位素墙(我想它也适用于砌体,只是更改了一些关键字),我将其添加到代码中:
var newtmbnotes = $("li.note:not(.isotope-item)");
这将选择所有尚未由同位素定位的注释元素(该插件将“同位素项目”类添加到它处理的每个项目中)。这使得所选内容仅包含新注释。
$('ol.notes').isotope( 'appended', newtmbnotes, introNote() );
最后,它会附加之前定义的新注释,然后运行一个名为 introNote 的函数,我在它们准备好后将其淡入淡出。
关于javascript - 在 Tumblr 中加载更多笔记时运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138876/