Как стать автором
Обновить

Комментарии 24

В какой блог лучше поместить: в GreaseMonkey или в jQuery?
По-моему логичнее в GM. Ведь топик о конкретной фиче GM, а jQuery используется как пример.
$(document).ready(function()........
это лишнее, т.к. GreaseMonkey запускает скрипт как только поступит событие DOMContentLoaded

wiki.greasespot.net/DOMContentLoaded
фича хорошая, жаль, что не кроссбраузерная

впрочем, зря вы так категорично «будет запрашиваться с сервера каждый раз». С правильным кешированием они максимум раз в месяц будут качаться. А например у гуглового хостинга популярных библиотек кеширование наверняка правильное. Я именно его собираюсь использовать.
// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);


вот кроссбраузерная
Не забывайте, что jquery-latest.js загрузится и выполнится не сразу, поэтому нужно еще отлавливать момент, объект jQuery станет доступным.
Stalker_RED привел не полный вариант кода. Полный вариант, с проверкой, загрузился ли jquery, здесь и здесь.
ой, зачем же таймеры? у script есть вполне рабочий onload
Есть рабочий код?
конечно, я же не нафантазировал сейчас всё это: )
Можно ссылку на него, или сам код привести здесь?
GМ скрипты не удобно отлаживать.
очевидно же:
var proto = document.createElement('script');
proto.src = 'http://ajax.googleapis.com/ajax/libs/prototype/1.6.1/prototype.js';
proto.onload = onload();
document.body.appendChild(proto);

а, забыл сам обработчик (хотя можно и без него):
function onload() {
  if (window.Prototype && window.init) window.init()
}
а как насчет того, что в proto.onload сохраняется не функция, а результат работы этой функции?
соответственно onload() выполняется не в момент наступления события onLoad, а в момент присвоения proto.onload, что может случиться раньше, чем загрузится соответствующий js
это опечатка, там не должно быть "()"
ок, как-то так: joanpiedra.com/jquery/greasemonkey/
это вообще гуглится с пол-пинка, по словам jquery и greasemonkey
или через script onload, да.
Фича плохая. Как мне в Опере или Сафари её реализовать? Никак.

Была бы это функция GM_require, таких проблем бы не было.
GreaseMonkey был первым, в остальных браузерах используется его формат заголовка. Не вижу причин почему бы всем не реализовать более полную совместимость с GreaseMonkey последних версий.
А фича эта очень полезная, если скрипт пишется заведомо для Firefox. Например я часто пишу пользовательские скрипты только для себя, и jQuery здесь здорово экономит время.
Кстати, я не совсем хорошо осведомлен насчет отсутствия поддержки этой опции в других браузерах. Может быть где-то еще это уже реализовано.
я конечно не в тему, но может кто знает, есть ли GM для беты FF 3.6?
Библиотека jQuery интегрированные в браузер через расширение jQuery. Стоят последние jQuery и jQuery UI.

Благодаря названию «0 jQuery» грузится первее всех расширений (проверено на убунте и виндовсе), поэтому объект $ доступен всем расширениям(невидим для сайтов), ну и конечно можно как-нибудь прикрутить к greasemonkey.

Я его создал, потому как иногда использую в приватных и коммерческих расширениях, и лучше объеденить под одной крышей, чтобы не захломлять браузер кучей копий
Когда то мне тоже надо было использовать jQuery из GreaseMonkey, причем на сайте, где исполнялся скрипт, jQuery уже был. Нашел такое решение:

//wait for jQuery to be loaded
function waitForJquery(){
	if (typeof unsafeWindow.jQuery == 'undefined') {  
		window.setTimeout(waitForJquery, 100);
	} else {
		$ = unsafeWindow.jQuery;
		//your code here
	}
}
waitForJquery();
Мне не удалось заставить нормально работать $.getJSON из-под GreaseMonkey ни на одной версии jQuery начиная от 1.2, где эта функция была введена и до текущей.
Запрос к целевому сайту делает, а потом выдаёт ошибку вида «функция jsonp123456789 не определена».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории