我用这个URL运行一个greasemonkey脚本:
// @include https://www.younow.com*
// @exclude https://www.younow.com/steven73*
// @grant none
// ==/UserScript==
alert("HELLO");
我的问题是我的剧本似乎被禁用了#34; on" internal"导航,这意味着当我运行Firefox并且我加载的第一个站点是" steven73"页面和加载页面后,我点击其中一个"现在趋势"飘带(你在网站的左上角看到它)我想得到消息框,但msgbox没有出现,因为脚本只执行"一次"当我访问" younow"网站第一次(F5除外)。似乎"内部"导航阻止了脚本的执行。每次单击"现在趋势"之一时,如何执行我的脚本?飘带(在网站的左上角)?
答案 0 :(得分:0)
此网站使用AJAX方法更新页面的某些部分,而无需完全重新加载 而用户脚本仅在初始页面加载时自动执行。
为click事件添加一个监听器,并在暂停后运行代码:
document.addEventListener('click', function(e) {
var trendingLink = e.target.closest('a.trending_image');
if (trendingLink) {
var stopTryingAt = Date.now() + 5000;
var interval = setInterval(function() {
if (document.querySelector('.player-main')) {
clearInterval(interval);
onPageUpdated();
}
if (Date.now() >= stopTryingAt) {
clearInterval(interval);
}
}, 20);
}
});
function onPageUpdated() {
console.log('Boo!');
}
或者使用waitForKeyElements函数等待元素出现而不是使用setInterval。