Jira Tampermonkey 用于在 Log Work 中编写工作描述的脚本

Jira Tampermonkey Script to write work description in Log Work

我目前正在尝试编写一个 Tampermonkey 脚本,它会自动在文本区域“工作描述”(As seen in screenshot) 中填充默认文本。 Jira中的代码是

<textarea class="textarea long-field long-field" cols="60" id="comment" name="comment" rows="10"></textarea>

通常(在其他情况下作为 testet),当使用 document.getElementById("comment") 获取元素时,可以说 .value 并获取文本区域的内容。在所有其他文本字段中,这有效,通常情况下,textareas 也有效,如下所示

function printa() {
  document.getElementById("b").innerHTML = document.getElementById("a").value;
}
<textarea id="a"></textarea>
<br>
<button onclick="printa()">Show content of textarea</button>
<p id="b"></p>

删除除 ID 以外的所有内容不会影响结果。

这对我来说不起作用。我不知道 Jira 在那里做了什么,但不知何故,它不起作用。

注意:所有这些都在控制台和 Tampermonkey 脚本中进行了测试,但都不起作用,我认为,在为控制台提供解决方案之前包括 tampermonkey 脚本是没有用的。

注意 2:我在 Chromium 和 Firefox 中对其进行了测试,结果相同

编辑:Jira 太蠢了,id="comment" 有多个元素。而且,JS 选择了我不想要的那个。所以现在它是关于找到一个特定的文本区域,同时两者都有 ID comment

我也遇到过这种情况。使用 React 和 Angular 类型的应用程序,页面上的多个 ID 变得不那么罕见了。

对我始终有效的解决方案是在我的 (CSS-ish) select 中更加具体。所以,而不是 selecting:

$('#comment').val()

我会使用更详细的select或者:

$('body > div:nth-child(3) .nuther-area > div:nth-child(2) #comment').val()

令人惊讶的是,这允许您访问正确的 ID 标签...尽管通过使用上述方法可以 select 元素本身而不使用其 ID 标签。

当然,唯一的问题是,随着页面结构的变化,您的 selectors 有时需要进行调整。不过,根据我的经验,这种情况很少发生。

(很抱歉在我的示例中使用 jQuery - 我写得更快。关键不是给你代码,而是演示一种技术,这在纯js)

所以,既然我发现了问题,修复起来相当容易,即使很糟糕。

document.querySelectorAll("#comment")[1].value