1

这是我想出的代码(有很多外部帮助;我不精通 JS):

setTimeout(function() {
   var logout = document.querySelector('a.yucs-signout'),
   link = "http://login.yahoo.com/config/login?logout=1&.src=cdgm&.intl=us&.direct=2&.done=http://ma
il.yahoo.com";
   logout.setAttribute ('onclick', 'location.href = 
\"' + link + '\"');
   logout.setAttribute ('href', link);
}, 17000)

当单击“退出”下拉菜单项时,我正在尝试更改雅虎邮箱的退出 URL,以便将您重定向回雅虎邮箱登录页面——而不是 yahoo.com 的“主页”。这是为了更容易使用其他帐户登录。

我们无法让它工作。甚至为代码添加了超时,以防我的 js 运行得太快。还是不行。

有人告诉我“在 :hover 上没有 CSS 的 class="yucs-submenu-toggle"<a id="yucs-menu_link_profile">意味着正在使用 javascript。”

注销控制截图:
注销控制截图

您必须将鼠标悬停在该部分上才能使菜单下拉并查看Sign Out

我还确保我的“包含页面”是 https:https://*.mail.yahoo.*/*

我正在尝试将它与 Greasemonkey 一起使用,为什么它不起作用?

编辑:我在想这个其他答案可能有一些有用的东西,比如里面的 jQuery 东西?

4

1 回答 1

1
  1. 如果问题中的代码是逐字复制的,那么它存在来自不正确制作的多行字符串的语法错误。
  2. 不要onclick从用户脚本设置。曾经!在这种情况下,无论如何都不需要任何形式的点击事件处理,并且可能会阻塞页面的注销操作。

除此之外,该代码对我有用——至少在雅虎、英国、邮件上。

还有一些小问题:

  1. 在这种情况下,您不需要 setTimeout。
  2. 不要像那样暴力破解链接;它可能并不总是有效。使用正则表达式以手术方式仅更改done可变部分。


这是一个完整的工作脚本

// ==UserScript==
// @name        _Fix Yahoo mail logout
// @include     http://mail.yahoo.com/*
// @include     http://*.mail.yahoo.com/*
// @include     https://mail.yahoo.com/*
// @include     https://*.mail.yahoo.com/*
// ==/UserScript==

//-- Only run in the top page, not the various iframes.
if (window.self === window.top) {
    var logout = document.querySelector ('a.yucs-signout');
    if (logout) {
        var link = logout.href.replace (
            /&\.done=[^&#]+(&?)/, "&.done=http://mail.yahoo.com$1"
        );
        logout.href = link;
    }
    else
        console.error ("From GM script:  Node 'a.yucs-signout' not found.");
}
于 2013-05-04T09:10:09.947 回答