Greasemonkey @require не работает в Chrome - PullRequest
3 голосов
/ 20 марта 2012

Я пытаюсь добавить jQuery, используя метод Greasemonkey @require / @include, но он не работает.Появляется следующая ошибка:

Uncaught ReferenceError: $ is not defined (repeated 10 times)

Это мой пример кода:

// ==UserScript==
// @description Bored, really bored.
// @name MatteoSample
// @namespace MatteoSampleNamespace
// @include *
// @include       http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==

$(document).slideUp();

Как я могу это исправить?

Ответы [ 2 ]

10 голосов
/ 20 марта 2012

@ic не является допустимым мета-правилом, поэтому оно игнорируется.
Используйте @require, если вы хотите загрузить jQuery в свой пользовательский скрипт.

// ==UserScript==
// @name       Foo
// @namespace  Bar
// @include    *
// @require    http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==

РЕДАКТИРОВАТЬ: В комментариях вы сказали, что вы используете Chrome .Chrome не поддерживает правило @require.См. Также:

Если вам нужна полная поддержка Greasemonkey в Chrome, используйте Tampermonkey .

Устранение путаницы с пользовательскими скриптами в Chrome

Chrome не изначально поддерживает GreaseMonkey.При загрузке файла .user.js он преобразуется в расширение Chrome в виде сценария содержимого .

Для получения дополнительной информации о пользовательских сценариях в Chrome см. эту документацию .

Сценарий пользователя буквально копируется в каталог расширения:

// ==UserScript==
// @name       Foo
// @namespace  Bar
// @include    *
// @require    http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
alert(typeof $)

Файл manifest.json создается на основе мета-блока.Когда пользовательский сценарий содержит правило @include, его правило matches будет содержать https://*/* и http://*/* из-за слишком свободного правила @include.

Содержимое сгенерированного manifest.jsonвыглядит так:

{
   "content_scripts": [ {
      "exclude_globs": [  ],
      "include_globs": [ "*" ],
      "js": [ "script.js" ],
      "matches": [ "http://*/*", "https://*/*" ],
      "run_at": "document_idle"
   } ],
   "converted_from_user_script": true,
   "description": "",
   "key": "+.... some key ...=",
   "name": "Foo",
   "version": "1.0"
}
1 голос
/ 01 апреля 2012

chrome не поддерживает сценарии greasemonkey, скорее, определенные команды greasemonkey (@require, GM_ и т. д.)

чтобы все заработало, установите Chrome Addon "TamperMonkey"

...