2013-02-26 11 views
15

Ho uno script Greasemonkey per Firefox. Lo script include questo meta-blocco e alcune linee di codice.Perché il mio script Greasemonkey non viene aggiornato?

Desidero aggiornare il mio script sul server e quindi aggiornare automaticamente gli script del browser. L'opzione requireSecureUpdates è disattivata.
Cosa sto sbagliando?

miei 1.meta.js

// ==UserScript== 
// @name  Ibood autosubmit 
// @include https://*.ibood.com/* 
// @include http://*.ibood.com/* 
// @include * 
// @version 1.1 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// @grant GM_addStyle 
// @downloadURL http://www.tipsvoorbesparen.nl/1.user.js 
// @updateURL http://www.tipsvoorbesparen.nl/1.meta.js 
// ==/UserScript== 

risposta

18

due problemi:

  1. Attualmente, il tuo 1.meta.js è:

    // ==UserScript== 
        // @name  Ibood autosubmit 
        // @include https://*.ibood.com/* 
        // @include http://*.ibood.com/* 
        // @include * 
        // @version 1.7 
        // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
        // @grant GM_addStyle 
        // @downloadURL http://www.tipsvoorbesparen.nl/1.user.js 
        // @updateURL http://www.tipsvoorbesparen.nl/1.meta.js 
        // ==/UserScript== 
    

    Nota gli spazi iniziali?

    Greasemonkey non può gestire spazi iniziali per il suo Metadata Block a causa di una limitazione di progettazione .

  2. La versione di script corrente sembra essere 1.8, ma il file meta ha la versione 1.7.

~~~~~
Per piccoli script, che si ospita sul proprio sito web, non si preoccupano neppure con l'impostazione @updateURL. È lì principalmente per risparmiare larghezza di banda, specialmente su siti come userscripts.org.

Senza l'impostazione @updateURL, Greasemonkey utilizzerà/controllerà tutto ciò che è impostato da @downloadURL. Ciò consente di risparmiare ulteriore lavoro di manutenzione (e possibili SNAFU come questo).

Infine, su una nota non correlata, non utilizzare @include *!
Utilizzando @include *:

  1. Rallenta il browser
  2. può causare effetti collaterali indesiderati
  3. Provoca utenti di coscienza per rifiutare l'installazione dello script.





. In particolare, questo bit nel file di origine GM, parseScript.js:

var gAllMetaRegexp = new RegExp(
    '^// ==UserScript==([\\s\\S]*?)^// ==/UserScript==', 'm'); 
+0

quando si dice non si usa includere non dici cosa usare. intendevi usare la partita invece di includere? – erm3nda

+0

@ erm3nda, ho detto di non usare '@include *'. Questo '* fa una grande differenza. Sì, è bene usare '@ match', oppure puoi usare qualcosa come' @include http: // YOUR_SERVER.COM/YOUR_PATH/* ' –

+0

Oh, tu dici' @include * 'LETTERALMENTE. Hai ragione, questo è il modo veramente sbagliato. – erm3nda

1

Se lo script funziona, allora non è probabilmente un problema con il blocco di meta, SALVO, è necessario utilizzare una valida fonte HTTPS per consentire in aggiornamento.

Riferimento http://wiki.greasespot.net/Metadata_Block#.40downloadURL

+0

HTPS è richiesto solo se è selezionata l'opzione "Richiedi aggiornamenti sicuri". (Sì, è controllato di default sulle nuove installazioni di Greasemonkey.) Si noti inoltre che è stato dimostrato che il blocco dei metadati * era * difettoso nel file '* .meta.js'. Quindi quella parte di questa risposta è sbagliata. –