2017-04-14 1 views
0

Lors du chargement du site Web younow, la boîte de message "Démarrer" apparaît deux fois. -Comment puis-je réparer cela?Younow onLoad (avec greasemonkey)

// ==UserScript== 
// @name  test 
// @include https://www.younow.com/* 
// @version  1 
// @grant  none 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js 
// ==/UserScript== 
$(document).ready(function() { 
alert("Start"); 
}); 

Répondre

1

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:

  1. 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.
  2. É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'); 
}