Adding a @grant value breaks my Greasemonkey+jQuery script?

后端 未结 1 518
闹比i
闹比i 2020-12-20 23:02

When I add the @grant for GM_xmlhttpRequest, I get:

Error: Permission denied to access property \'call\'

in the jQuery file.

相关标签:
1条回答
  • See "Error: Permission denied to access property 'handler'".

    You can no longer invoke the target-page's jQuery like that.

    (Note that in @grant none mode (the default as of GM 2), unsafeWindow is the same as window... But, then you can't use GM_ functions.)


    @require your own copy of jQuery; it will not conflict with the page's and will load faster, to boot.

    Do not use unsafeWindow for things like this (or at all, if you can help it), and $(document).ready() is also almost never needed for Greasemonkey scripts.

    Your (new) sample script would merely be:

    // ==UserScript==
    // @name        Dimi Test
    // @namespace   Dimi
    // @version     1
    // @grant       GM_xmlhttpRequest
    // @include     about:addons
    // @include     http://*.myDomain.*/*
    // @require     http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
    // ==/UserScript==
    
    $("body").prepend ('<h1>Hello World!</h1>');
    

    And you can then mix GM_ functions and your instance of jQuery with no problems.



    Note: The question script has // @include about:addons.
    Greasemonkey scripts will not work on the about:addons page, by design.

    0 讨论(0)
提交回复
热议问题