Greasemonkey, основные функции сайта - PullRequest
7 голосов
/ 31 октября 2010

Я много читаю и пытаюсь сделать это в течение 5 часов ... вот здесь

Я хочу написать скрипт, который будет переопределять функцию dummy (){$ .ajax (...)};на сайте.

вот как я пытаюсь это сделать

unsafeWindow.dummy = function(data){differantFunction(); $.ajax(...);};

function differantFunction(){
...
}

но фиктивная функция, которая была бы вызвана, чтобы сделать что-то на исходной странице ... сейчаспросто ничего не делает.

// update

Я попытался запустить эту функцию, я пытаюсь переопределить через адресную строку, чтобы увидеть, что не так: (javascript: dummy ("..");)

и я получаю сообщение о том, что $ не определено, но у меня есть jquery на веб-сайте и в пользовательском сценарии ... я так растерялся сейчас

1 Ответ

11 голосов
/ 01 ноября 2010

Это происходит потому, что скрипт работает в области видимости GM.Если вы не используете какую-либо функцию GM (например, GM_setValue или GM_xmlhttpRequest), я рекомендую вам сделать следующее:

var script = document.createElement('script'); 
script.type = "text/javascript"; 
script.innerHTML = (<><![CDATA[

// YOUR CODE GOES HERE

]]></>).toString();
document.getElementsByTagName('head')[0].appendChild(script);

Пишите код как обычный скрипт, а не как скрипт GM.Я имею в виду, удалить все unsafeWindow ссылки и все прочее.Это заставит скрипт работать в правильной области.

НО, если вы используете функции GM, вам нужно будет добавить unsafeWindow перед каждой переменной в обычной области (например, $) или сделать что-то вродеи молитесь, чтобы это сработало:

$ = unsafeWindow.$;
//...

PS.: Многострочная строка с E4X больше не поддерживается.Некоторые другие варианты:1) добавьте свой код в функцию и затем используйте Function.prototype.toString 2) создать свой код в виде отдельного файла, а затем добавить его в качестве ресурса 3) добавить обратную косую черту в конце каждой строки

...