为什么jQuery()。remove()和unbind()不能在GreaseMonkey中工作?

时间:2011-03-18 17:00:09

标签: javascript jquery greasemonkey

我正在尝试在greaseMonkey脚本中使用jQuery().remove()jQuery().unbind方法(以及类似的函数),但它不起作用。虽然相同的确切调用在fireBug中工作。我猜它与GM沙盒有关,而且范围完全关闭。

我确实尝试使用unsafeWindow.jQuery,甚至宣布window = unsafeWindow但它没有帮助。

所有其他jQuery内容(例如clone append)工作正常。

有人对此有任何想法或建议吗?

编辑:代码:

(function($) {
    var changeURLs = function() {
        var window = unsafeWindow;
            $('.link-results li').each(function() {
                var $a = $(this).find('a'), directUrl;
                if ($a.hasClass('redirect')) return;
                $a.unbind('click'); //!! Not working
                if (/sidereel\.com/.test($a[1].href)) { // Megavideo like link
                    $.get($a[1].href, function(data) {
                        directUrl = $(data).find('.play-link')[0].innerHTML;
                        $a[1].href = $a[2].href = directUrl;
                        $a.each(function() {
                            unsafeWindow.console.log( $(this).remove() ); //!! Not working
                        });
                    });
                } else { // Sponsered link
                    $a[2].href = $a[1].href;
                }
                $a.addClass('redirect');
            });
        },
        $thickBox = $('.ui-dialog-content');
    if ($thickBox.length) $thickBox.dialog('close')

    changeURLs();
    jQuery('.link-results-container').bind('DOMNodeInserted', changeURLs);
})(unsafeWindow.jQuery);

1 个答案:

答案 0 :(得分:-1)

如果页面上尚未显示JQuery,则另外一个从谷歌加载JQuery: http://joanpiedra.com/jquery/greasemonkey/