Les alert
actes de cette façon sur ce site, peut-être à cause d'un reload après l'appel, mais avec un précédez c'est ok pour moi.
$(document).ready(function() {
$('body').prepend("toto"); // your code here
});
De même, vous n'avez pas besoin d'utiliser la fonction ready, greasmonkey lancez votre script au bon moment.
Mais le problème est:
- Je suppose que vous voulez faire vos affaires lorsque tous les éléments sont chargés ajax. Donc, la meilleure façon de le faire est d'observer la dom.
- Étant donné que le site Web modifie la page en cours en utilisant les requêtes AJAX en cliquant et que l'événement
hashchange
ne fonctionne pas, j'utilise une astuce pour écouter les changements de page.
Avec ce script, vous pouvez utiliser une fonction alert
:
// ==UserScript==
// @name test
// @include https://www.younow.com/*
// @version 1
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// ==/UserScript==
var observer = null;
initObserver();
function initObserver()
{
observer = new MutationObserver(onMutation);
observer.observe(document,
{
childList: true, // report added/removed nodes
subtree: true, // observe any descendant elements
});
}
$(window).on('hashchange', function(e)
{
initObserver();
});
intervalMutation = setInterval(onMutation.bind(null, null), 1000);
function locationObserver()
{
var oldLocation = location.href;
setInterval(function() {
if(location.href != oldLocation) {
onMutation(null);
oldLocation = location.href
}
}, 1000); // check every second
}
locationObserver();
function onMutation(mutations)
{
// Check if this class exits:
if($('.trending-now').length ||
$('.ynicon ynicon-chat').length ||
$('.trending_title').length ||
$('.trending-tags-list').length)
{
// Disconnect the observer:
observer.disconnect();
// Clear the interval :
clearInterval(intervalMutation);
// Call your code:
pageReady();
}
}
function pageReady()
{
// your code here:
alert('start');
}