2016-11-29 2 views
1

Das folgende Skript funktioniert in Firefox/Greasemonkey, aber in Chrome/Tampermonkey passiert nichts.Script funktioniert in Greasemonkey, aber in Tampermonkey passiert nichts?

Kann jemand sehen, warum es in Tampermonkey nicht funktioniert?

// ==UserScript== 
// @name  Example 
// @namespace Example.com 
// @description Example.com 
// @include  https://example.com/* 
// @include  http://example.com/* 
// @version  1 
// @grant  none 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js 
// @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012 
// ==/UserScript== 

window.onload = function(){ 
    document.getElementById('close-cookies').click(); 
}; 

waitForKeyElements('div.survey16', removeSurvey); 

function removeSurvey() { 
    document.getElementById('survey16').hide(); 
} 

$('.chat-bot').hide(); 
+0

Wenn Sie einige 'console.log' setzen, ist es in der Konsole angemeldet? Was ist, wenn Sie einige '@ require' entfernen? –

Antwort

2

Der Fragecode sollte in keinem Browser funktionieren und Sie sollten Fehlermeldungen in den Konsolen sehen.

Probleme:

  1. document.getElementById('survey16')does not have a .hide() method. Das ist eine jQuery-Funktion.
  2. removeSurvey() sollte sein:

    function removeSurvey (jNode) { 
        jNode.hide(); //-- .hide is a jQuery function. 
    } 
    
  3. AUSSER, gibt es eine Diskrepanz zwischen dem waitForKeyElements Anruf und removeSurvey.
    Im ersten für ein div Sie suchen mit Klassesurvey16, aber in der zweiten Sie versuchen, ein Element mit dem idsurvey16 zu löschen. Welches ist es?
  4. Verwenden Sie in der Regel nicht @grant none, wenn Sie auch @require verwenden, dies führt normalerweise zu Seitenkonflikten und Abstürzen. jQuery is especially bad.
  5. Auch funktioniert @grant none in beiden Browsern etwas anders. Wenn Sie @require verwenden, geben Sie @grant GM_addStyle an, außer in speziellen und seltenen Fällen.
+0

Super! Kennen Sie eine Möglichkeit zu debuggen, was 'jNode' enthält? Ich nehme an, dass Sie 'console.log' dafür verwenden? –

+1

jNode ist immer ein standardmäßiges [jQuery-Objekt] (http://learn.jquery.com/using-jquery-core/jquery-object/). Und ja, Sie können es console.log. –

Verwandte Themen