2016-11-07 39 views
1

我需要在内部网络上使我的Jira页面以红色使用用户脚本显示我的受让人姓名,而无需任何外部代码使用 - 无需jQuery等。并尽可能简单我只是在学习。 示例页面请点击这里(列表视图):https://jira.atlassian.com/issues/?filter=-5Userscript getElementsByTagName不返回Jira页面的所有链接

我的内部网页遵循它与我的名字标签,就像这样:

上的顶部和底部的线条
<a class="user-hover" rel="myusername" id="assignee_myusername" href="https://jira.mydomain.org/secure/ViewProfile.jspa?name=myusername" target="_parent">Myfirstname Mylastname</a> 

我userscript仅使颜色变化该页面(我登录;它改变了大多数用户特定的链接)。但中间列出的案件和受让人名单并未受到影响。这是我的脚本:

// ==UserScript== 
// @name   Jira 
// @namespace  https://jira.mydomain.org/secure/Dashboard.jspa 
// @include  https://jira.mydomain.org/* 
// ==/UserScript== 
var links = document.getElementsByTagName('a'); 
var element; 
    for (var i = 0; i < links.length; i++) { 
    element = links[ i ]; 
    if (element.id = "assignee_myusername") { 
     element.style.color = "red"; 
     element.style.backgroundColor = "black"; 
    } 
} 

我该如何让它突出显示我的名字在Assignee列?

P.S.这与Ajax问题不同,因为它使用了我在开始时指定的外部代码 - 无需外部代码。没有外部代码。

+0

这可能是因为一些内容是通过XHR加载,你的脚本需要被多次调用。你如何执行你的脚本? –

+0

我没有专门执行它,Ninjakit - 整个脚本在我的文章。我认为它在页面加载后执行。 – uldics

+0

[Fire AJAX请求中的Greasemonkey脚本]可能重复(http://stackoverflow.com/questions/8281441/fire-greasemonkey-script-on-ajax-request) –

回答

0

我的猜测是,当你的用户脚本执行时,你想要脚本的Jira页面的部分还没有被加载。 Jira使用Ajax异步加载页面的一部分。尝试在您的代码周围添加一个setTimeout

window.setTimeout(function() { 
    var links = document.getElementsByTagName('a'); 
    var element; 
    for (var i = 0; i < links.length; i++) { 
     element = links[ i ]; 
     if (element.id = "assignee_myusername") { 
      element.style.color = "red"; 
      element.style.backgroundColor = "black"; 
     } 
    } 
}, 1000); 

这将突出显示一秒后的链接。这是一个冒险的解决方案,但是如果它能够工作,那么至少会告诉你,异步加载实际上是问题。

如果你只是想改变ID为“assignee_myusername”元素的风格,你并不需要使用getElementsByTagName,您可以使用getElementById

window.setTimeout(function() { 
    var element = document.getElementById('assignee_myusername'); 
    element.style.color = "red"; 
    element.style.backgroundColor = "black"; 
}, 1000); 
+0

只需添加超时功能,即可使页面上的每个链接都变为彩色。但只要我改变,如果有其他标准: && element.rel =“myusername” 没有得到突出显示。 而getElementById只做一个元素,getElementsById再次没有做任何事情。 – uldics

+0

请原谅我的初学者错误!比较是==,不是=。在其中一个记者的公开页面上(未登录)试用过多个报道的案例,并获得了所有与他名字相关的链接,这很奇怪。然后它就像我脸上的拳头 - “==”,现在它就像一个魅力。 – uldics

+0

对,我忽略了这一点。对于它的价值,你应该总是使用===,而不是==。出于所有实际目的,双等号被弃用。 –

相关问题