2016-11-07 41 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

對,我忽略了這一點。對於它的價值,你應該總是使用===,而不是==。出於所有實際目的,雙等號被棄用。 –

相關問題