javascript - 转换 JavaScript 书签以便与 Greasemonkey 一起使用?

标签 javascript greasemonkey bookmarklet

我正在尝试获取以下书签作为 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'}) 行我的警报被触发。

最佳答案

  1. greasemonkey 脚本无法直接访问 jQuery。 Greasemonkey 将脚本沙箱到其自己的范围内,因此您需要在页面全局范围内访问的任何内容(例如 jQuery)都必须通过 window.wrappedJSObject
  2. 进行访问
  3. 您需要将 Greasemonkey 版本中的所有 %20 替换为空格字符
  4. 您需要将 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/

相关文章:

javascript - 将 JSON 绑定(bind)到表

javascript - 多个 noUiSlider 实例化问题

javascript - 我的 Greasemonkey 脚本在控制台中输入时有效,但在 Firefox 中尝试使用时无效

google-analytics - 由小书签触发的 Google Analytics(分析)推荐

javascript - 使用 Javascript 打开一个新页面并在那里填充表单值

javascript - 如何将内容放在 particle.js 之上/之上

javascript - overflow hidden 在移动浏览器中显示,但在桌面浏览器中不显示

javascript - 更改页面加载时的所有网址

php - 如何将 URL 编码为 CakePHP 参数