Одна проблема здесь:
while ( final3 == final1 && final3 == final2);
Должно быть
while ( final3 == final1 || final3 == final2);
Условие должно быть ИЛИ, а не И.
При этом я предполагаю, что это для класса, который вы посещаете. Я дам вам несколько советов. Все это может быть сделано намного проще и понятнее с помощью знаний, которые вы уже продемонстрировали в приведенном выше коде. Вам просто нужно больше думать о том, как можно более эффективно использовать циклы и классы для достижения своей цели.
Возможно, у вас недостаточно свежая версия Greasemonkey. Версия 0.8 добавила @require
.
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
Если у вас нет 0.8, используйте технику, которую Джоан Пьедра описывает для , вручную добавляя элемент script
в страница .
Между версиями 0.8 и 0.9, @require
обрабатывается только при первой установке скрипта. Если вы измените список необходимых скриптов, вам необходимо удалить ваш скрипт и переустановить его; Greasemonkey загружает требуемый скрипт один раз при установке и после этого использует кэшированную копию.
Начиная с версии 0.9, поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые скрипты после каждого редактировать; переустановка сценария больше не требуется.
затем используйте технику, которую Джоан Пьедра описывает для , вручную добавляя элемент script
на страницу .
Между версиями 0.8 и 0.9 @require
равно обрабатывается только при первой установке скрипта. Если вы измените список необходимых скриптов, вам необходимо удалить ваш скрипт и переустановить его; Greasemonkey загружает требуемый скрипт один раз при установке и после этого использует кэшированную копию.
Начиная с версии 0.9, поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые скрипты после каждого редактировать; переустановка сценария больше не требуется.
затем используйте технику, которую Джоан Пьедра описывает для , вручную добавляя элемент script
на страницу .
Между версиями 0.8 и 0.9 @require
равно обрабатывается только при первой установке скрипта. Если вы измените список необходимых скриптов, вам необходимо удалить ваш скрипт и переустановить его; Greasemonkey загружает требуемый скрипт один раз при установке и после этого использует кэшированную копию.
Начиная с версии 0.9, поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые скрипты после каждого редактировать; переустановка сценария больше не требуется.
@require
обрабатывается только при первой установке скрипта. Если вы измените список необходимых скриптов, вам необходимо удалить ваш скрипт и переустановить его; Greasemonkey загружает требуемый скрипт один раз при установке и после этого использует кэшированную копию.
Начиная с версии 0.9, поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые скрипты после каждого редактировать; переустановка сценария больше не требуется.
@require
обрабатывается только при первой установке скрипта. Если вы измените список необходимых скриптов, вам необходимо удалить ваш скрипт и переустановить его; Greasemonkey загружает требуемый скрипт один раз при установке и после этого использует кэшированную копию.
Начиная с версии 0.9, поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые скрипты после каждого редактировать; переустановка сценария больше не требуется.
Поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые сценарии после каждого редактирования; переустановка сценария больше не требуется. Поведение Greasemonkey изменилось (для решения косвенно связанной проблемы ), так что теперь он загружает необходимые сценарии после каждого редактирования; переустановка сценария больше не требуется.Нет ничего плохого в том, чтобы полностью включить jQuery в ваш сценарий Greasemonkey. Просто возьмите исходный код и поместите его вверху вашего пользовательского скрипта. Нет необходимости создавать тег сценария, поскольку вы уже выполняете JavaScript!
Пользователь в любом случае загружает сценарий только один раз, поэтому размер сценария не имеет большого значения. Кроме того, если вы когда-нибудь захотите, чтобы ваш сценарий Greasemonkey работал в средах, отличных от GM (таких как пользовательские сценарии Opera в стиле GM или Greasekit в Safari), это поможет не использовать уникальные для GM конструкции, такие как @require.
Вы можете создать новый скрипт, используя New User Script в Greasemonkey, но вы должны отредактировать файл config.xml в папке gm_scripts.
Ваш config.xml файл должен иметь такой же синтаксис, как и этот:
<Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test">
<Include>http://*</Include>
<Require filename="jquery.js"/>
</Script>
Обратите внимание на тэг
.
В вашем скрипте вы можете использовать прямой синтаксис jQuery. Убедитесь, что у вас есть требуемый тег в заголовке Greasemonkey. Вот пример Hello World:
// ==UserScript==
// @name Test jQuery
// @namespace http://www.example.com/jQueryPlay/
// @description Just a test
// @include http://*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// ==/UserScript==
$(document).ready(function() {
alert("Hello world!");
});
Помните, что после изменения config.xml вам нужно перезапустить браузер для Greasemonkey, чтобы перезагрузить настройки заново.
Также обратите внимание, что вам нужно скопировать файл jquery.js в папку каталога вашего скрипта, чтобы это работало. Я протестировал это, и это работает, только если вы действительно скопируете файл туда вручную.
Счастливого jQuerying!
.Решение Роба правильное - используйте @require
с библиотекой jQuery и обязательно переустановите ваш скрипт, чтобы директива обрабатывалась.
Одна вещь, которую я думаю стоит добавить, это то, что вы можете использовать jQuery нормально, как только вы включили его в свой скрипт, кроме методов AJAX. По умолчанию jQuery ищет XMLHttpRequest, который не существует в контексте Greasemonkey. Я писал о обходном пути, когда вы создаете обертку для GM_xmlhttpRequest (версия XHR для Greasemonkey) и используете ajaxSetup()
jQuery, чтобы указать вашу обертку в качестве версии по умолчанию. После этого вы сможете использовать $.get
и $.post
как обычно.
У вас также могут возникнуть проблемы с jQuery $.getJSON
, потому что он загружает JSONP, используя теги . Это приводит к ошибкам, потому что jQuery определяет функцию обратного вызова в области видимости окна Greasemonkey, а загруженные сценарии ищут обратный вызов в области видимости главного окна. Лучше всего вместо этого использовать
$.get
и разобрать результат с помощью JSON.parse()
.
Обновление : как говорится в комментарии ниже, этот ответ устарел.
Как уже говорили все, @require запускается только после установки сценария. Однако вы также должны отметить, что в настоящее время jQuery 1.4. * Не работает с greasemonkey. Подробности см. Здесь: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
Вам придется использовать jQuery 1.3.2, пока все не изменится.