2017-04-14 4 views
0

younowのWebサイトを読み込むとき、メッセージボックス "Start"が2回ポップアップします。 - どうすれば修正できますか?Younow onLoad(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"); 
}); 

答えて

1

alertは、コールの後、多分理由のリロードのために、このウェブサイト上でこのように動作しますが、先頭に追加して、それは私のために大丈夫です。

$(document).ready(function() { 
    $('body').prepend("toto"); // your code here 
}); 

また、レディ機能を使用する必要はありません.Greasmonkeyは適切なタイミングでスクリプトを開始します。

しかし、問題は次のとおりです。

  1. 私はあなたがすべてのAJAXの要素がロードされたときに自分のものをしたいとします。ですから、それを行う最善の方法はdomを観察することです。
  2. クリックするとAJAXリクエストを使用して現在のページが変更され、hashchangeイベントが機能しないため、私はページ変更を聞くためにいくつかのトリックを使います。

    // ==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'); 
    } 
    
  3. このスクリプトでは

あなたはalert機能を使用することができます

関連する問題