我正在尝试使用jQuery
创建一个简单的Greasemonkey脚本。 jQuery
已从页面脚本加载。
我需要一个非常简单的更改:
var $ = unsafeWindow.jQuery;
$("body").prepend('<button id="tsDownload">DownloadExcel</button>');
$("#tsDownload").click(function(){
alert("TEST!");
});
脚本可以添加按钮,但不能附加click事件,该部分将被忽略。你能告诉我为什么吗?与安全有关吗?
例如,经过几次发现,我不得不添加第一行才能从“ unsafeWindow”获得jQuery
。
如果我从控制台尝试此代码,它将起作用!这就是为什么我猜测Greasemonkey的安全限制。
答案 0 :(得分:1)
这是尝试访问页面上使用的jQuery实例时的安全问题,该实例被视为一个单独的窗口,并且有一些限制。
但是,这并不是真的要完成。相反,您应该在自己的GreaseMonkey脚本中包含自己的jQuery实例。您可以通过添加
// @require https://code.jquery.com/jquery-3.3.1.min.js
到脚本顶部的注释。是的,这意味着脚本将加载两次,但是会在本地缓存并且不会有太大意义。