我正在尝试使用以下书签作为Greasemonkey脚本来解决stackexchange站点的辅助功能错误。
javascript:(function(){$('a,%20.vote-up-off,%20.vote-down-off,%20.star-off').attr({role:'link',tabindex:'0'});})()
当我删除函数()并将其放在下面的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'})
行,我的警报会被点击。
答案 0 :(得分:2)
window.wrappedJSObject
%20
<强>代码:强>
// ==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 ) );
答案 1 :(得分:1)
由于Greasemonkey脚本不对其源代码进行URL解码,因此您需要将所有%20
替换为 space 字符。
然后,要访问页面的jQuery,如果页面甚至有它,只需使用:
// ==UserScript==
// @name StackExchange access
// @description Enables y-aria stuff on stackoverflow
// @include *
// ==/UserScript==
unsafeWindow.$ ('a, .vote-up-off, .vote-down-off, .star-off').attr({role:'link', tabindex:'0'});
alert("worldzz");
1. 注意:此方法,尤其是JAAulde的答案都带有slight risk that the web page can pwn your system。
备用方法,(1)没有安全风险,(2)适用于不使用jQuery的网页;是GM脚本使用它自己的jQuery。
这样做:
// ==UserScript==
// @name StackExchange access
// @description Enables y-aria stuff on stackoverflow
// @include *
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// ==/UserScript==
$ ('a, .vote-up-off, .vote-down-off, .star-off').attr({role:'link', tabindex:'0'});
alert("worldzz");