2014-09-19 3 views
0

Я запускаю несколько самозаписываемых сценариев пользователей Greasemonkey, которые почти всегда нуждались в функции unsafeWindow. К сожалению, эта функция была прекращена по большей части, но теперь у меня проблемы с исправлением моих скриптов. Я читал, что есть три новые функции (cloneInto(), exportFunction() и createObjectIn()), но я открыто признаю, что я не понимаю, что this page хочет, чтобы я.unsafeWindow больше не работает - что мне делать?

Может кто-нибудь дать мне быстрое объяснение, какую из этих трех функций я должен использовать, и, конечно же, как их снова преобразовать? Извините, но я не очень хорошо разбираюсь в этом.

В качестве простого примера:

$("#someid").append('<a href="#" onclick="somefunction();return false;">Click</a>'); 

unsafeWindow.somefunction = function() { 
    alert("Hello!"); 
} 
+0

Этот дубликат почти не имеет ничего общего с моей проблемой. Либо это, либо я не могу найти никакой связи. – Selbi

+1

Я считаю, что это связано с вашей проблемой ... – SamB

ответ

0

Greasemonkey 2,0 радикально изменили unsafeWindow обращение. Теперь вы должны использовать

unsafeWindow.somefunction = exportFunction(function() { 
    alert("Hello!"); 
}, unsafeWindow); 

или

exportFunction(function() { 
    alert("Hello!"); 
}, unsafeWindow, {defineAs: "somefunction"}); 

См exportFunction в MDN. Вы также можете быть заинтересованы в createObjectIn и cloneInto.

+0

Я сказал, что знаю эти три функции. Я не знаю, как правильно их использовать. Кроме того, в этом коде, который вы указали, я больше не вижу имя («somefunction»). – Selbi

+0

@ user3216060 Я забыл, что часть, исправлена. Что именно вы не понимаете? – Oriol

+0

Хм, мне все еще кажется, что «ReferenceError: somefunction не определен». Я попробовал оба метода. Это похоже на то, что Firefox/Greasemonkey прямо игнорирует присутствие этой функции. Любая идея, что не так? – Selbi

Смежные вопросы