您知道如何滚动到个人资料页面的底部(我说的是用户的个人页面,而不是时间轴),会自动加载新的推文。我正在编写一个UserScript,我想在每次加载这些新推文时执行一个函数。
但我无法找到一种方法来检测这个新的推文加载事件。我假设它是一个AJAX请求,对吗?所以我尝试了以下两个功能,但无济于事。
$(document).ajaxComplete(function() {
alert("Complete! New tweets loaded!");
});
$(document).ajaxSuccess(function() {
alert("Success! New tweets loaded!");
});
这是我到目前为止所拥有的。这在首先加载页面时有效。但它不会影响向下滚动后加载的推文。
// ==UserScript==
// @name CoolScript
// @include https://twitter.com/IJNanayakkara
// @include https://twitter.com/IJNanayakkara/status/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @version 1.0
// @license GPL v3 or any later version (http://www.gnu.org/copyleft/gpl.html)
// @grant GM_addStyle
// ==/UserScript==
$.each($('p.js-tweet-text'), function() {
$(this).prepend("Brought to you by ");
});
如何检测从jQuery加载新推文?
修改 我注意到另一个问题。导航到页面时,脚本不会运行。我实际上必须刷新页面。我搜索并找到了this answer。我将.js文件导入脚本,但我不知道我应该等待哪个元素。
如何在不手动刷新的情况下运行脚本?
答案 0 :(得分:3)
如果,你的代码是这样的:
$.each($('p.js-tweet-text'), function() {
$(this).prepend("Brought to you by ");
});
对页面的静态位或命令控制台起作用,然后转换为此waitForKeyElements
代码:
waitForKeyElements ("p.js-tweet-text", prependToTweet);
function prependToTweet (jNode) {
jNode.prepend("Brought to you by ");
}
简单:选择器保持不变,直接.each()
代码端口,$(this)
替换为jNode
。
waitForKeyElements
自动处理AJAXed元素(适用于向下滚动而无需刷新)。