2013-02-26 5 views
15

У меня есть сценарий Greasemonkey для Firefox. Скрипт включает этот мета-блок и некоторые строки кода.Почему мой скрипт Greasemonkey не обновляется?

Я хочу обновить свой скрипт на сервере и затем автоматически обновить сценарии браузера. Опция requireSecureUpdates выключена.
Что я делаю неправильно?

Мои 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== 

ответ

18

две проблемы:

  1. В настоящее время ваш 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== 
    

    Обратите внимание на начальные пробелы?

    Greasemonkey не может обрабатывать ведущие пространства для своих Metadata Block из-за ограничения по дизайну .

  2. Текущая версия скрипта кажется 1,8, но метафайл имеет версию 1.7.

~~~~~
Для небольших скриптов, которые вы размещаете на своем сайте, даже не заморачиваться с установкой @updateURL. Это в основном для экономии полосы пропускания, особенно на таких сайтах, как userscripts.org.

Без установки @updateURL, Greasemonkey будет просто использовать/проверять все, что установлено @downloadURL. Это экономит вам дополнительные работы по техническому обслуживанию (и, возможно, SNAFU, как этот).

Наконец, на несвязанной ноте, не используйте @include *!
Использование @include *:

  1. Замедляет ваш браузер
  2. Может вызвать нежелательные побочные эффекты
  3. Причину добросовестных пользователей отказаться от установки сценария.





. В частности, этот бит в исходном файле GM, parseScript.js:

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

когда вы говорите, не использовать, включают не сказать, что использовать. вы имели в виду использовать совпадение вместо этого? – erm3nda

+0

@ erm3nda, я сказал, что не используйте '@include *'. Это '*' имеет большое значение. Да, полезно использовать '@ match', или вы можете использовать что-то вроде' @include http: // YOUR_SERVER.COM/YOUR_PATH/* ' –

+0

О, вы говорите' @include * 'LITERALLY. Вы правы, это действительно неправильно. – erm3nda

1

Если скрипт работает, то есть вряд ли проблема с метой блоком, КРОМЕ, вы должны использовать действительный источник HTTPS, чтобы включить обновление.

Ссылка http://wiki.greasespot.net/Metadata_Block#.40downloadURL

+0

HTPS требуется, только если установлен флажок «Требовать безопасные обновления». (Да, он по умолчанию проверяется на новых установках Greasemonkey.) Также обратите внимание, что было доказано, что блок метаданных * был * неисправен в файле '* .meta.js'. Так что часть этого ответа неверна. –