Jira任务状态更新后页面没刷新怎么办?

书生シ珊珊 阅读 45

我在用 Jira 管理前端任务,每次改完任务状态(比如从“进行中”拖到“已完成”),页面不会自动刷新,得手动 F5 才能看到最新状态,这体验太差了。试过清缓存、换浏览器都不行。

是不是我页面里这段嵌入的 iframe 代码有问题?

<iframe 
  src="https://ourcompany.atlassian.net/jira/software/projects/FE/boards/123"
  width="100%" 
  height="800" 
  frameborder="0">
</iframe>
我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
东方新红
这个问题的关键是 Jira 页面在 iframe 中加载后,并没有设置自动刷新机制,导致状态更新后需要手动刷新才能看到最新的数据。

解决这个问题,我们可以尝试在 iframe 中嵌入的页面上添加一些 JavaScript 代码,监听任务状态的变化,并触发页面的自动刷新。不过,由于 Jira 的页面是外部加载的,我们不能直接修改 Jira 的源代码。因此,我们可以尝试通过父页面来操作 iframe 内容。

具体步骤如下:

1. 在父页面中添加 JavaScript 代码,定期检查 iframe 中的任务状态是否发生变化。
2. 如果检测到变化,则强制刷新 iframe。

为了实现这个功能,我们需要在父页面的 JavaScript 中使用 setInterval 来定期执行检查任务状态的函数。这里假设 iframe 中的任务状态可以通过某个 DOM 元素的属性或文本内容来判断。

首先,在父页面中添加以下代码:

// 获取 iframe 元素
var jiraIframe = document.getElementById('jiraFrame');

// 上一次记录的任务状态
var lastStatus = '';

// 定期检查任务状态的函数
function checkTaskStatus() {
// 确保 iframe 已经加载完成
if (jiraIframe.contentDocument) {
// 假设任务状态可以在一个带有特定 id 或类的元素中找到
var taskStatusElement = jiraIframe.contentDocument.getElementById('taskStatus');

if (taskStatusElement) {
var currentStatus = taskStatusElement.innerText;

// 如果当前状态和上次状态不同,则刷新 iframe
if (currentStatus !== lastStatus) {
console.log('Task status changed from ' + lastStatus + ' to ' + currentStatus + '. Refreshing iframe...');
jiraIframe.src = jiraIframe.src;
lastStatus = currentStatus;
}
} else {
console.warn('Task status element not found in iframe.');
}
}
}

// 每 10 秒检查一次任务状态
setInterval(checkTaskStatus, 10000);


这段代码会每 10 秒检查一次 iframe 中的任务状态,如果发现状态发生变化,就会重新加载 iframe。

需要注意的是,这种方法依赖于 iframe 内部的任务状态元素 ID 或类名。如果这些 ID 或类名在不同的页面中有所不同,或者 Jira 的页面结构发生了变化,可能需要相应地调整代码。

另外,这种方法会频繁地重新加载 iframe,可能会增加服务器的负担,同时也会影响用户体验。如果 Jira 提供了 API 或者其他方式来监听任务状态的变化,可以考虑使用这些方式来优化解决方案。

最后,确保 iframe 的 id 是 jiraFrame,或者根据实际情况修改 JavaScript 代码中的 id 名称。

希望这个方案能帮到你,如果有问题再问我。
点赞
2026-03-21 13:02