我正在尝试获取以下书签作为 Greasemonkey 脚本来解决 stackexchange 站点的可访问性错误。
javascript:(function(){$('a,%20.vote-up-off,%20.vote-down-off,%20.star-off').attr({role:'link',tabindex:'0'});})()
当我删除 function() 并将其放入以下 Greasemonkey 脚本中时,它不起作用。
// ==UserScript==
// @name StackExchange access
// @description Enables y-aria stuff on stackoverflow
// @include *
// ==/UserScript==
$('a,%20.vote-up-off,%20.vote-down-off,%20.star-off').attr({role:'link',tabindex:'0'});
alert("worldzz");
我猜测我需要以某种方式从 Greasemonkey 访问文档对象,但不知道如何执行此操作。
我知道脚本被调用,因为如果我注释掉 $('a,%20.vote-up-off,%20.vote-down-off,%20.star-off') .attr({role:'link',tabindex:'0'})
行我的警报被触发。
最佳答案
- greasemonkey 脚本无法直接访问 jQuery。 Greasemonkey 将脚本沙箱到其自己的范围内,因此您需要在页面全局范围内访问的任何内容(例如 jQuery)都必须通过
window.wrappedJSObject
进行访问
- 您需要将 Greasemonkey 版本中的所有
%20
替换为空格字符 - 您需要将 jQuery DOM 操作放入就绪函数中,以便在元素出现在屏幕上之前它不会运行。
代码:
// ==UserScript==
// @name StackExchange access
// @description Enables y-aria stuff on stackoverflow
// @include *
// ==/UserScript==
( function( global )
{
var $;
if( global.jQuery )
{
$ = global.jQuery;
$( function()
{
$( 'a, .vote-up-off, .vote-down-off, .star-off' )
.attr( {
role:'link',
tabindex:'0'
} );
} );
}
}( window.wrappedJSObject ) );
关于javascript - 转换 JavaScript 书签以便与 Greasemonkey 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6818697/