首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在被黑客攻击的waitForKeyElements版本中修复无限循环?

问如何在被黑客攻击的waitForKeyElements版本中修复无限循环?
EN

Stack Overflow用户
提问于 2018-05-14 14:59:30
回答 1查看 280关注 0票数 0

我公司的网站使用Metronic水平菜单管理面板,但它是一个较旧的版本,使用齿轮而不是用户配置文件图片和名称。在Firefox 30之前,这个Greasemonkey脚本可以工作,并将“我的配置文件”和“注销”按钮移到用户配置文件/名称下,同时将“我的日历”、“我的收件箱”和“我的任务”放在齿轮图标下拉列表中。这是我的Greasemonkey代码:

代码语言:javascript
复制
// ==UserScript==
// @name        Fix User Dropdown
// @description Fixes the user dropdown to match current version.
// @include     mywebsite.com
// @version     2.0.0
// @require         https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require         https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant               GM_addStyle
// @grant               GM.getValue
// ==/UserScript==
//- The @grant directives are needed to restore the proper sandbox.

waitForKeyElements (".topMenu1", addUserDropdown, true);

function addUserDropdown(jNode) {
  $('#greetingName').remove();
  var userSession = unsafeWindow.userSession;
  var userId = userSession.id;
  var firstName = userSession.firstName;
  var lastName = userSession.lastName;
  var fullName = firstName + ' ' + lastName;
  var accountId = userSession.accountId;

  $('.top-menu .nav').prepend(
        '<li class="dropdown dropdown-user dropdown-dark">' + 
            '<a data-close-others="true" data-hover="dropdown" data-toggle="dropdown" class="dropdown-toggle username username-hide-mobile floatRight" href="#" style="padding:10px;border-right:1px solid #000;margin:5px;">' + 
                fullName + 
            '</a>' + 
            '<ul id="userPersonalMenu" class="dropdown-menu dropdown-menu-default">' + 
                '<li>' + 
                    '<a href="/user/editor?id=' + userId + '&amp;accountId=' + accountId + '" id="greetingNameLink">' + 
                    '<i class="icon-settings"></i> My Profile </a>' + 
                '</li>' + 
                '<li>' + 
                    '<a href="/logout">' + 
                    '<i class="icon-key"></i> Log Out </a>' + 
                '</li>' + 
            '</ul>' + 
        '</li>');

  $('.dropdown-toggle').dropdownHover({});

  return null;
}

这就是发生的事情:

​

​

它从不打印"CANCEL FOUND",因为调用堆栈仍然应该解决,这违背了我所关心的逻辑。然后,它将用户的名字(示例中的“Nick”)从右到左,然后从上到下无限地在屏幕上绘制。

我希望将bWaitOnce设置为true可以解决这个问题,但没有骰子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-17 20:09:44

我补充说:

代码语言:javascript
复制
// @require https://raw.githubusercontent.com/CWSpear/bootstrap-hover-dropdown/master/bootstrap-hover-dropdown.js

到我的用户脚本的顶部,获取悬浮下拉列表的最新版本,它就成功了!

故事的寓意是,检查用户脚本使用的页面依赖项,并确保它们与*Monkey兼容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50333445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档