用户脚本 getElementsByTagName 不返回 Jira 页面的所有链接
Userscript getElementsByTagName not returning all links of Jira page
我需要在不使用任何外部代码的情况下使用用户脚本使我在内部网络上的 Jira 页面以红色显示我的受让人姓名 - 不使用 jQuery 等。尽可能简单,就像我一样只是学习。
示例页面在这里(列表视图):https://jira.atlassian.com/issues/?filter=-5
我的内部页面有以下标记,其中包含我的名字,如下所示:
<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==
// @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";
}
}
如何让它在受让人栏中突出显示我的名字?
P.S。这与 Ajax 问题不同,因为它使用了我在开头指定的外部代码——没有外部代码。没有外部代码。
我的猜测是,当您的用户脚本执行时,您想要编写脚本的 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);
这将在一秒钟后突出显示 link。这是一个 hacky 解决方案,但如果可行,那么至少会告诉您异步加载实际上是问题所在。
如果只是想改变ID为“assignee_myusername”的元素的样式,则不需要使用getElementsByTagName
,可以使用getElementById
:
window.setTimeout(function () {
var element = document.getElementById( 'assignee_myusername' );
element.style.color = "red";
element.style.backgroundColor = "black";
}, 1000);
我需要在不使用任何外部代码的情况下使用用户脚本使我在内部网络上的 Jira 页面以红色显示我的受让人姓名 - 不使用 jQuery 等。尽可能简单,就像我一样只是学习。 示例页面在这里(列表视图):https://jira.atlassian.com/issues/?filter=-5
我的内部页面有以下标记,其中包含我的名字,如下所示:
<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==
// @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";
}
}
如何让它在受让人栏中突出显示我的名字?
P.S。这与 Ajax 问题不同,因为它使用了我在开头指定的外部代码——没有外部代码。没有外部代码。
我的猜测是,当您的用户脚本执行时,您想要编写脚本的 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);
这将在一秒钟后突出显示 link。这是一个 hacky 解决方案,但如果可行,那么至少会告诉您异步加载实际上是问题所在。
如果只是想改变ID为“assignee_myusername”的元素的样式,则不需要使用getElementsByTagName
,可以使用getElementById
:
window.setTimeout(function () {
var element = document.getElementById( 'assignee_myusername' );
element.style.color = "red";
element.style.backgroundColor = "black";
}, 1000);