<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>首页 on keda</title>
    <link>https://cncfstack.com/p/keda/</link>
    <description>Recent content in 首页 on keda</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 20 Oct 2023 10:00:00 +0800</lastBuildDate>
    <atom:link href="https://cncfstack.com/p/keda/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>HelmChart 仓库</title>
      <link>https://cncfstack.com/p/keda/helmchart/</link>
      <pubDate>Fri, 20 Oct 2023 10:00:00 +0800</pubDate>
      <guid>https://cncfstack.com/p/keda/helmchart/</guid>
      <description>&lt;div id=&#34;helmchart-container&#34;&gt;&#xA;  &lt;div class=&#34;charts-container&#34;&gt;&#xA;    &lt;div class=&#34;loading&#34;&gt;加载中...&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;pagination-wrapper&#34;&gt;&#xA;    &lt;div class=&#34;pagination-container&#34;&gt;&#xA;      &lt;!-- 分页控件将通过JavaScript动态生成 --&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;style&gt;&#xA;.helmchart-user-index {&#xA;  padding: 10px;&#xA;}&#xA;&#xA;.charts-container {&#xA;  min-height: 400px;&#xA;  /* 在显示数据时，顶部的导航高度 */&#xA;  margin-top: 80px;&#xA;}&#xA;&#xA;.no-data {&#xA;  padding: 40px 0;&#xA;  text-align: center;&#xA;}&#xA;&#xA;.chart-grid {&#xA;  display: grid;&#xA;  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));&#xA;  gap: 20px;&#xA;  margin-bottom: 30px;&#xA;}&#xA;&#xA;.chart-item {&#xA;  cursor: pointer;&#xA;  transition: all 0.3s ease;&#xA;  border: 1.5px solid #ebeef5;&#xA;  display: flex;&#xA;  flex-direction: column;&#xA;  background: #fff;&#xA;  border-radius: 4px;&#xA;  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);&#xA;}&#xA;&#xA;.chart-item:hover {&#xA;  transform: translateY(-4px);&#xA;  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);&#xA;}&#xA;&#xA;.chart-content {&#xA;  padding: 20px;&#xA;  display: flex;&#xA;  flex-direction: column;&#xA;  flex: 1;&#xA;}&#xA;&#xA;.chart-main {&#xA;  flex: 1;&#xA;}&#xA;&#xA;.chart-header {&#xA;  display: flex;&#xA;  align-items: flex-start;&#xA;  margin-bottom: 15px;&#xA;  justify-content: space-between;&#xA;}&#xA;&#xA;.header-tag {&#xA;  flex-shrink: 0;&#xA;  margin-left: 10px;&#xA;  margin-top: 5px;&#xA;}&#xA;&#xA;.chart-info {&#xA;  flex: 1;&#xA;  min-width: 0;&#xA;}&#xA;&#xA;.chart-name {&#xA;  margin: 0 0 5px 0;&#xA;  font-size: 18px;&#xA;  font-weight: 600;&#xA;  color: #303133;&#xA;  white-space: nowrap;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;}&#xA;&#xA;.chart-repourl {&#xA;  font-size: 12px;&#xA;  color: gray;&#xA;  margin: 0;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;}&#xA;&#xA;.chart-description {&#xA;  margin-bottom: 15px;&#xA;  font-size: 14px;&#xA;  color: #606266;&#xA;  line-height: 1.5;&#xA;  display: -webkit-box;&#xA;  -webkit-box-orient: vertical;&#xA;  overflow: hidden;&#xA;  text-align: justify;&#xA;  word-wrap: break-word;&#xA;  word-break: break-word;&#xA;}&#xA;&#xA;.description-text {&#xA;  margin: 0;&#xA;  display: -webkit-box;&#xA;  -webkit-box-orient: vertical;&#xA;  -webkit-line-clamp: 4;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;}&#xA;&#xA;.chart-meta {&#xA;  display: flex;&#xA;  justify-content: space-between;&#xA;  align-items: center;&#xA;  border-top: 1px solid #eee;&#xA;  padding-top: 15px;&#xA;  margin-top: auto;&#xA;}&#xA;&#xA;.chart-sync-period {&#xA;  font-size: 12px;&#xA;  color: #909399;&#xA;}&#xA;&#xA;.pagination-wrapper {&#xA;  display: flex;&#xA;  justify-content: flex-end;&#xA;  padding: 20px 0;&#xA;}&#xA;&#xA;.pagination-container {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  gap: 10px;&#xA;}&#xA;&#xA;.pagination-info {&#xA;  font-size: 14px;&#xA;  color: #606266;&#xA;}&#xA;&#xA;.pagination-controls {&#xA;  display: flex;&#xA;  gap: 5px;&#xA;}&#xA;&#xA;.pagination-btn {&#xA;  padding: 5px 10px;&#xA;  border: 1px solid #dcdfe6;&#xA;  background: #fff;&#xA;  border-radius: 4px;&#xA;  cursor: pointer;&#xA;  font-size: 14px;&#xA;}&#xA;&#xA;.pagination-btn:hover {&#xA;  background: #ecf5ff;&#xA;  color: #409eff;&#xA;}&#xA;&#xA;.pagination-btn.disabled {&#xA;  color: #c0c4cc;&#xA;  cursor: not-allowed;&#xA;  background: #fff;&#xA;}&#xA;&#xA;.pagination-btn.disabled:hover {&#xA;  background: #fff;&#xA;}&#xA;&#xA;.pagination-btn.active {&#xA;  background: #409eff;&#xA;  color: #fff;&#xA;  border-color: #409eff;&#xA;}&#xA;&#xA;.page-sizes {&#xA;  margin-right: 10px;&#xA;}&#xA;&#xA;.page-sizes select {&#xA;  padding: 5px;&#xA;  border: 1px solid #dcdfe6;&#xA;  border-radius: 4px;&#xA;}&#xA;&#xA;.loading, .error {&#xA;  text-align: center;&#xA;  padding: 40px 0;&#xA;  font-size: 16px;&#xA;}&#xA;&#xA;.error {&#xA;  color: #f56565;&#xA;}&#xA;&#xA;.el-tag {&#xA;  background-color: #ecf5ff;&#xA;  border-color: #d9ecff;&#xA;  color: #409eff;&#xA;  padding: 0 10px;&#xA;  height: 24px;&#xA;  line-height: 22px;&#xA;  font-size: 12px;&#xA;  border-width: 1px;&#xA;  border-style: solid;&#xA;  border-radius: 4px;&#xA;  box-sizing: border-box;&#xA;  white-space: nowrap;&#xA;}&#xA;&#xA;@media (max-width: 768px) {&#xA;  .chart-grid {&#xA;    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));&#xA;    gap: 15px;&#xA;  }&#xA;}&#xA;&#xA;@media (max-width: 480px) {&#xA;  .chart-grid {&#xA;    grid-template-columns: 1fr;&#xA;  }&#xA;  &#xA;  .chart-header {&#xA;    flex-direction: column;&#xA;    align-items: center;&#xA;    text-align: center;&#xA;  }&#xA;  &#xA;  .header-tag {&#xA;    margin-top: 10px;&#xA;  }&#xA;}&#xA;&lt;/style&gt;&#xA;&lt;script&gt;&#xA;document.addEventListener(&#39;DOMContentLoaded&#39;, function() {&#xA;  // API端点URL&#xA;  const API_HELMCHART_URL = &#39;https://server.cs.cncfstack.com/api/v1/resources/helmchart/repo&#39;;&#xA;  &#xA;  // 数据状态&#xA;  let loading = false;&#xA;  let charts = [];&#xA;  &#xA;  // 分页相关&#xA;  let currentPage = 1;&#xA;  let pageSize = 50;&#xA;  let totalCharts = 0;&#xA;  &#xA;  // 搜索关键词&#xA;  let searchKeyword = &#39;keda&#39;;&#xA;  &#xA;  // 格式化日期&#xA;  function formatDate(dateString) {&#xA;    const date = new Date(dateString);&#xA;    return date.toLocaleDateString(&#39;zh-CN&#39;);&#xA;  }&#xA;  &#xA;  // 提取主机名&#xA;  function getOriginalHostname(url) {&#xA;    const match = url.match(/^https?:\/\/([^\/]+)/i);&#xA;    return match ? match[1] : &#39;&#39;;&#xA;  }&#xA;  &#xA;  // 跳转到详情页&#xA;  function goToDetail(repo_url, chart_name) {&#xA;    const repo_host = getOriginalHostname(repo_url);&#xA;    window.open(`https://cncfstack.com/c/${repo_host}/${chart_name}`, &#39;_blank&#39;);&#xA;  }&#xA;  &#xA;  // 渲染图表网格&#xA;  function renderChartGrid(chartsData) {&#xA;    const container = document.querySelector(&#39;.charts-container&#39;);&#xA;    &#xA;    if (!chartsData || chartsData.length === 0) {&#xA;      container.innerHTML = `&#xA;        &lt;div class=&#34;no-data&#34;&gt;&#xA;          &lt;p&gt;暂无 HelmChart 数据&lt;/p&gt;</description>
    </item>
    <item>
      <title>镜像仓库</title>
      <link>https://cncfstack.com/p/keda/image/</link>
      <pubDate>Fri, 20 Oct 2023 10:00:00 +0800</pubDate>
      <guid>https://cncfstack.com/p/keda/image/</guid>
      <description>&lt;div id=&#34;image-grid-container&#34;&gt;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;document.addEventListener(&#39;DOMContentLoaded&#39;, function() {&#xA;  // API端点URL（需要根据实际情况调整）&#xA;  const API_IMAGE_REPO_URL = &#39;https://server.cs.cncfstack.com/api/v1/image/repo&#39;; // 需要替换为实际的API地址&#xA;  &#xA;  // 格式化日期&#xA;  function formatDate(dateString) {&#xA;    const date = new Date(dateString);&#xA;    return date.toLocaleDateString(&#39;zh-CN&#39;);&#xA;  }&#xA;&#xA;  // 渲染镜像卡片&#xA;  function renderImageGrid(reposData) {&#xA;    const container = document.getElementById(&#39;image-grid-container&#39;);&#xA;    &#xA;    if (!container) {&#xA;      console.error(&#39;未找到ID为image-grid-container的元素&#39;);&#xA;      return;&#xA;    }&#xA;&#xA;    if (!reposData || reposData.length === 0) {&#xA;      container.innerHTML = `&#xA;        &lt;div class=&#34;no-images&#34;&gt;&#xA;          &lt;p&gt;暂无镜像数据&lt;/p&gt;&#xA;        &lt;/div&gt;&#xA;      `;&#xA;      return;&#xA;    }&#xA;&#xA;    let gridHTML = &#39;&lt;div class=&#34;image-grid&#34;&gt;&#39;;&#xA;    &#xA;    reposData.forEach(repo =&gt; {&#xA;      gridHTML += `&#xA;        &lt;div class=&#34;image-card&#34; onclick=&#34;viewRepoDetail(&#39;${repo.host_vendor}&#39;, &#39;${repo.image_repo}&#39;)&#34;&gt;&#xA;          &lt;div class=&#34;app-card-content&#34;&gt;&#xA;            &lt;div class=&#34;app-card-header&#34;&gt;&#xA;              &lt;div class=&#34;app-card-info&#34;&gt;&#xA;                &lt;h2 class=&#34;app-card-name&#34;&gt;${repo.image_repo}&lt;/h2&gt;&#xA;                &lt;p class=&#34;image-repo&#34;&gt;${repo.host_vendor}&lt;/p&gt;&#xA;              &lt;/div&gt;&#xA;              &lt;div class=&#34;header-tag&#34;&gt;&#xA;                &lt;span class=&#34;image-repo-tag&#34;&gt;镜像&lt;/span&gt;&#xA;              &lt;/div&gt;&#xA;            &lt;/div&gt;&#xA;            &#xA;            &lt;div class=&#34;app-card-description&#34;&gt;&#xA;              &lt;p class=&#34;app-card-description-text&#34;&gt;${repo.description || &#39;暂无描述&#39;}&lt;/p&gt;&#xA;            &lt;/div&gt;&#xA;            &#xA;            &lt;div class=&#34;app-card-image-meta&#34;&gt;&#xA;              &lt;span class=&#34;app-card-meta&#34;&gt;上次同步 ${formatDate(repo.sync_at)}&lt;/span&gt;&#xA;            &lt;/div&gt;&#xA;          &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;      `;&#xA;    });&#xA;    &#xA;    gridHTML += &#39;&lt;/div&gt;&#39;;&#xA;    container.innerHTML = gridHTML;&#xA;  }&#xA;&#xA;  // 查看仓库详情&#xA;  window.viewRepoDetail = function(hostVendor, imageRepo) {&#xA;    const name = `${hostVendor}/${imageRepo}`;&#xA;    window.open(`https://cncfstack.com/i/${name}`, &#39;_blank&#39;);&#xA;  };&#xA;&#xA;  // 从API加载数据&#xA;  async function loadData() {&#xA;    try {&#xA;      // 显示加载状态&#xA;      const container = document.getElementById(&#39;image-grid-container&#39;);&#xA;      container.innerHTML = &#39;&lt;div class=&#34;loading&#34;&gt;加载中...&lt;/div&gt;&#39;;&#xA;      &#xA;      // 发起API请求&#xA;      const response = await fetch(`${API_IMAGE_REPO_URL}?page=1&amp;page_size=50&amp;ready_check=true&amp;search_colume=all&amp;search_keyword=keda`);&#xA;      &#xA;      if (!response.ok) {&#xA;        throw new Error(`HTTP error! status: ${response.status}`);&#xA;      }&#xA;      &#xA;      const result = await response.json();&#xA;      &#xA;      // 正确解析API响应数据&#xA;      let repos = [];&#xA;      if (result &amp;&amp; result.data) {&#xA;        // 如果data是一个数组，直接使用&#xA;        if (Array.isArray(result.data)) {&#xA;          repos = result.data;&#xA;        } &#xA;        // 如果data包含data字段且是数组，使用该字段&#xA;        else if (result.data.data &amp;&amp; Array.isArray(result.data.data)) {&#xA;          repos = result.data.data;&#xA;        }&#xA;      }&#xA;      &#xA;      // 渲染数据&#xA;      renderImageGrid(repos);&#xA;    } catch (error) {&#xA;      console.error(&#39;获取仓库列表失败:&#39;, error);&#xA;      const container = document.getElementById(&#39;image-grid-container&#39;);&#xA;      container.innerHTML = &#39;&lt;div class=&#34;error&#34;&gt;获取数据失败，请稍后重试&lt;/div&gt;&#39;;&#xA;    }&#xA;  }&#xA;&#xA;  // 初始化渲染&#xA;  loadData();&#xA;});&#xA;&lt;/script&gt;&#xA;&lt;style&gt;&#xA;/* image-grid.css */&#xA;.image-grid {&#xA;  display: grid;&#xA;  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));&#xA;  gap: 20px;&#xA;  margin-bottom: 30px;&#xA;  margin-top: 80px;&#xA;  padding: 20px;&#xA;}&#xA;&#xA;/* .image-card {&#xA;  cursor: pointer;&#xA;  transition: all 0.3s ease;&#xA;  border-radius: 4px;&#xA;  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);&#xA;  background: #fff;&#xA;} */&#xA;&#xA;.image-card {&#xA;  cursor: pointer;&#xA;  transition: all 0.3s ease;&#xA;  border-radius: 4px;&#xA;  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);&#xA;  background: #fff;&#xA;  /* 添加最大宽度限制 */&#xA;  max-width: 100%;&#xA;  width: 100%;&#xA;}&#xA;&#xA;.image-card:hover {&#xA;  transform: translateY(-4px);&#xA;  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);&#xA;}&#xA;&#xA;.app-card-content {&#xA;  padding: 20px;&#xA;  display: flex;&#xA;  flex-direction: column;&#xA;  flex: 1;&#xA;}&#xA;&#xA;.app-card-header {&#xA;  display: flex;&#xA;  align-items: flex-start;&#xA;  margin-bottom: 15px;&#xA;  justify-content: space-between;&#xA;}&#xA;&#xA;.header-tag {&#xA;  flex-shrink: 0;&#xA;  margin-left: 10px;&#xA;  margin-top: 5px;&#xA;}&#xA;&#xA;.app-card-info {&#xA;  flex: 1;&#xA;  min-width: 0;&#xA;}&#xA;&#xA;/* .app-card-name {&#xA;  margin: 0 0 5px 0;&#xA;  font-size: 18px;&#xA;  font-weight: 600;&#xA;  color: #303133;&#xA;  white-space: nowrap;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;} */&#xA;&#xA;.app-card-name {&#xA;  margin: 0 0 5px 0;&#xA;  font-size: 18px;&#xA;  font-weight: 600;&#xA;  color: #303133;&#xA;  /* 修改以下属性以支持长文本换行 */&#xA;  white-space: normal;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;  word-wrap: break-word;&#xA;  word-break: break-word;&#xA;  display: -webkit-box;&#xA;  -webkit-line-clamp: 2; /* 限制显示2行 */&#xA;  -webkit-box-orient: vertical;&#xA;}&#xA;&#xA;.image-repo {&#xA;  margin: 0;&#xA;  font-size: 13px;&#xA;  color: #606266;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;}&#xA;&#xA;.app-card-description {&#xA;  margin-bottom: 15px;&#xA;  font-size: 14px;&#xA;  color: #606266;&#xA;  line-height: 1.5;&#xA;  display: -webkit-box;&#xA;  -webkit-box-orient: vertical;&#xA;  overflow: hidden;&#xA;  text-align: justify;&#xA;  min-height: 60px;&#xA;  word-wrap: break-word;&#xA;  word-break: break-word;&#xA;}&#xA;&#xA;.app-card-description-text {&#xA;  margin: 0;&#xA;  display: -webkit-box;&#xA;  -webkit-box-orient: vertical;&#xA;  overflow: hidden;&#xA;  text-overflow: ellipsis;&#xA;}&#xA;&#xA;.app-card-image-meta {&#xA;  display: flex;&#xA;  justify-content: space-between;&#xA;  align-items: center;&#xA;  border-top: 1px solid #eee;&#xA;  padding-top: 15px;&#xA;  margin-top: auto;&#xA;}&#xA;&#xA;.app-card-meta {&#xA;  font-size: 12px;&#xA;  color: #909399;&#xA;}&#xA;&#xA;.no-images {&#xA;  grid-column: 1 / -1;&#xA;  text-align: center;&#xA;  padding: 50px 0;&#xA;}&#xA;&#xA;.loading, .error {&#xA;  grid-column: 1 / -1;&#xA;  text-align: center;&#xA;  padding: 50px 0;&#xA;  font-size: 16px;&#xA;}&#xA;&#xA;.error {&#xA;  color: #f56565;&#xA;}&#xA;&#xA;.image-repo-tag {&#xA;  background-color: #ecf5ff;&#xA;  border-color: #d9ecff;&#xA;  color: #409eff;&#xA;  padding: 0 10px;&#xA;  height: 24px;&#xA;  line-height: 22px;&#xA;  font-size: 12px;&#xA;  border-width: 1px;&#xA;  border-style: solid;&#xA;  border-radius: 4px;&#xA;  box-sizing: border-box;&#xA;  white-space: nowrap;&#xA;}&#xA;&#xA;@media (max-width: 768px) {&#xA;  .image-grid {&#xA;    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));&#xA;    gap: 15px;&#xA;  }&#xA;}&#xA;/* &#xA;@media (max-width: 480px) {&#xA;  .image-grid {&#xA;    grid-template-columns: 1fr;&#xA;  }&#xA;  &#xA;  .app-card-header {&#xA;    flex-direction: column;&#xA;    align-items: center;&#xA;    text-align: center;&#xA;  }&#xA;} */&#xA;&#xA;@media (max-width: 480px) {&#xA;  .image-grid {&#xA;    grid-template-columns: 1fr;&#xA;    padding: 10px;&#xA;  }&#xA;  &#xA;  .app-card-header {&#xA;    flex-direction: column;&#xA;    align-items: center;&#xA;    text-align: center;&#xA;  }&#xA;  &#xA;  .app-card-content {&#xA;    padding: 15px;&#xA;  }&#xA;  &#xA;  .app-card-name {&#xA;    font-size: 16px;&#xA;    -webkit-line-clamp: 3; /* 移动端允许显示更多行 */&#xA;  }&#xA;}&#xA;&lt;/style&gt;</description>
    </item>
    <item>
      <title>Logo</title>
      <link>https://cncfstack.com/p/keda/logo/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cncfstack.com/p/keda/logo/</guid>
      <description>&lt;div id=&#34;dynamic-content&#34;&gt;&#xA;  &lt;p&gt;正在加载动态内容...&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;style&gt;&#xA;/* 保留原有样式 */&#xA;.image-list-container {&#xA;  max-width: 1200px;&#xA;  margin: 2rem auto;&#xA;  padding: 0 1rem;&#xA;}&#xA;&#xA;.image-list-title {&#xA;  text-align: center;&#xA;  margin-bottom: 2rem;&#xA;  color: #333;&#xA;  font-size: 1.8rem;&#xA;}&#xA;&#xA;.image-grid {&#xA;  display: grid;&#xA;  grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));&#xA;  gap: 1.5rem;&#xA;}&#xA;&#xA;.image-card {&#xA;  border: 1px solid #e1e8ed;&#xA;  border-radius: 8px;&#xA;  overflow: hidden;&#xA;  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);&#xA;  transition: transform 0.3s ease, box-shadow 0.3s ease;&#xA;  background: white;&#xA;  cursor: pointer;&#xA;}&#xA;&#xA;.image-card:hover {&#xA;  transform: translateY(-5px);&#xA;  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.15);&#xA;}&#xA;&#xA;.card-link {&#xA;  text-decoration: none;&#xA;  color: inherit;&#xA;}&#xA;&#xA;.card-header {&#xA;  background-color: #f5f8fa;&#xA;  padding: 1rem;&#xA;  border-bottom: 1px solid #e1e8ed;&#xA;}&#xA;&#xA;.card-title {&#xA;  margin: 0;&#xA;  font-size: 1.2rem;&#xA;  color: #1da1f2;&#xA;  font-weight: 600;&#xA;}&#xA;&#xA;.card-body {&#xA;  padding: 1rem;&#xA;}&#xA;&#xA;.vendor-info {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  margin-bottom: 0.8rem;&#xA;}&#xA;&#xA;.vendor-icon {&#xA;  width: 32px;&#xA;  height: 32px;&#xA;  background-color: #1da1f2;&#xA;  border-radius: 50%;&#xA;  display: flex;&#xA;  align-items: center;&#xA;  justify-content: center;&#xA;  color: white;&#xA;  font-weight: bold;&#xA;  margin-right: 0.8rem;&#xA;}&#xA;&#xA;.vendor-name {&#xA;  font-weight: 500;&#xA;  color: #333;&#xA;}&#xA;&#xA;.repo-info {&#xA;  background-color: #f8f9fa;&#xA;  padding: 0.8rem;&#xA;  border-radius: 4px;&#xA;  font-family: &#39;Courier New&#39;, monospace;&#xA;  font-size: 0.9rem;&#xA;  color: #333;&#xA;  word-break: break-all;&#xA;  margin-bottom: 0;&#xA;}&#xA;&#xA;.error-message {&#xA;  text-align: center;&#xA;  color: #e02d2d;&#xA;  padding: 2rem;&#xA;  font-size: 1.1rem;&#xA;}&#xA;&#xA;.loading-message {&#xA;  text-align: center;&#xA;  padding: 2rem;&#xA;  font-size: 1.1rem;&#xA;  color: #657786;&#xA;}&#xA;&#xA;@media (max-width: 768px) {&#xA;  .image-grid {&#xA;    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));&#xA;    gap: 1rem;&#xA;  }&#xA;  &#xA;  .image-list-title {&#xA;    font-size: 1.5rem;&#xA;  }&#xA;}&#xA;&#xA;/* 新增Logo展示样式 */&#xA;.logo-repo-container {&#xA;  padding: 20px;&#xA;  max-width: 1400px;&#xA;  margin: 80px auto;&#xA;}&#xA;&#xA;.logo-grid {&#xA;  display: grid;&#xA;  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));&#xA;  gap: 20px;&#xA;  margin-bottom: 20px;&#xA;}&#xA;&#xA;.logo-card {&#xA;  cursor: pointer;&#xA;  transition: all 0.3s ease;&#xA;  border-radius: 8px;&#xA;  overflow: hidden;&#xA;  background: white;&#xA;  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);&#xA;  position: relative;&#xA;}&#xA;&#xA;.logo-card:hover {&#xA;  transform: translateY(-5px);&#xA;  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);&#xA;}&#xA;&#xA;.logo-image-container {&#xA;  height: 160px;&#xA;  overflow: hidden;&#xA;  display: flex;&#xA;  align-items: center;&#xA;  justify-content: center;&#xA;  background-color: #f0f2f5;&#xA;  position: relative;&#xA;}&#xA;&#xA;.logo-image {&#xA;  max-width: 100%;&#xA;  max-height: 100%;&#xA;  object-fit: contain;&#xA;}&#xA;&#xA;.image-repo-tag {&#xA;  position: absolute;&#xA;  top: 8px;&#xA;  right: 8px;&#xA;  background-color: #ecf5ff;&#xA;  color: #409eff;&#xA;  padding: 3px 8px;&#xA;  border-radius: 4px;&#xA;  font-size: 12px;&#xA;}&#xA;&#xA;.image-error {&#xA;  display: flex;&#xA;  flex-direction: column;&#xA;  align-items: center;&#xA;  justify-content: center;&#xA;  height: 100%;&#xA;  color: #909399;&#xA;  font-size: 14px;&#xA;}&#xA;&#xA;.pagination-container {&#xA;  display: flex;&#xA;  justify-content: center;&#xA;  padding: 20px 0;&#xA;}&#xA;&#xA;.el-pagination {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  gap: 10px;&#xA;  flex-wrap: wrap;&#xA;  justify-content: center;&#xA;}&#xA;&#xA;.pagination-info {&#xA;  font-size: 14px;&#xA;  color: #606266;&#xA;}&#xA;&#xA;.pagination-sizes {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  gap: 5px;&#xA;}&#xA;&#xA;.page-size-select {&#xA;  padding: 5px;&#xA;  border: 1px solid #dcdfe6;&#xA;  border-radius: 4px;&#xA;}&#xA;&#xA;.pagination-controls {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  gap: 5px;&#xA;}&#xA;&#xA;.pagination-btn {&#xA;  padding: 5px 10px;&#xA;  border: 1px solid #dcdfe6;&#xA;  background: white;&#xA;  border-radius: 4px;&#xA;  cursor: pointer;&#xA;}&#xA;&#xA;.pagination-btn.disabled {&#xA;  color: #c0c4cc;&#xA;  cursor: not-allowed;&#xA;}&#xA;&#xA;.pagination-btn.active {&#xA;  background-color: #409eff;&#xA;  color: white;&#xA;  border-color: #409eff;&#xA;}&#xA;&#xA;.pagination-jump {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  gap: 5px;&#xA;  font-size: 14px;&#xA;  color: #606266;&#xA;}&#xA;&#xA;.pagination-input {&#xA;  width: 50px;&#xA;  padding: 5px;&#xA;  border: 1px solid #dcdfe6;&#xA;  border-radius: 4px;&#xA;}&#xA;&#xA;.pagination-go-btn {&#xA;  padding: 5px 10px;&#xA;  border: 1px solid #409eff;&#xA;  background: white;&#xA;  color: #409eff;&#xA;  border-radius: 4px;&#xA;  cursor: pointer;&#xA;}&#xA;&#xA;.drawer-overlay {&#xA;  position: fixed;&#xA;  top: 0;&#xA;  right: 0;&#xA;  bottom: 0;&#xA;  left: 0;&#xA;  background-color: rgba(0, 0, 0, 0.5);&#xA;  z-index: 1000;&#xA;  display: none;&#xA;}&#xA;&#xA;.drawer-overlay.visible {&#xA;  display: block;&#xA;}&#xA;&#xA;.detail-drawer {&#xA;  position: fixed;&#xA;  top: 0;&#xA;  right: 0;&#xA;  bottom: 0;&#xA;  width: 50%;&#xA;  background: white;&#xA;  z-index: 1001;&#xA;  transform: translateX(100%);&#xA;  transition: transform 0.3s ease;&#xA;  display: flex;&#xA;  flex-direction: column;&#xA;  overflow: hidden;&#xA;}&#xA;&#xA;.detail-drawer.open {&#xA;  transform: translateX(0);&#xA;}&#xA;&#xA;.drawer-header {&#xA;  padding: 15px 20px;&#xA;  border-bottom: 1px solid #eee;&#xA;  display: flex;&#xA;  justify-content: space-between;&#xA;  align-items: center;&#xA;}&#xA;&#xA;.drawer-title {&#xA;  font-size: 18px;&#xA;  font-weight: 600;&#xA;  margin: 0;&#xA;}&#xA;&#xA;.close-btn {&#xA;  background: none;&#xA;  border: none;&#xA;  font-size: 20px;&#xA;  cursor: pointer;&#xA;  color: #909399;&#xA;}&#xA;&#xA;.drawer-content {&#xA;  flex: 1;&#xA;  overflow-y: auto;&#xA;  padding: 20px;&#xA;  display: flex;&#xA;  flex-direction: column;&#xA;  gap: 20px;&#xA;}&#xA;&#xA;.detail-image-container {&#xA;  height: 370px;&#xA;  display: flex;&#xA;  align-items: center;&#xA;  justify-content: center;&#xA;  background-color: #f0f2f5;&#xA;  border-radius: 8px;&#xA;  overflow: hidden;&#xA;}&#xA;&#xA;.detail-image {&#xA;  max-width: 100%;&#xA;  max-height: 100%;&#xA;  object-fit: contain;&#xA;}&#xA;&#xA;.detail-info {&#xA;  flex: 1;&#xA;}&#xA;&#xA;.detail-actions {&#xA;  margin-top: 20px;&#xA;  text-align: center;&#xA;}&#xA;&#xA;.btn-download {&#xA;  background-color: #409eff;&#xA;  color: white;&#xA;  border: none;&#xA;  border-radius: 4px;&#xA;  padding: 12px 30px;&#xA;  font-size: 16px;&#xA;  cursor: pointer;&#xA;  display: inline-flex;&#xA;  align-items: center;&#xA;  gap: 5px;&#xA;}&#xA;&#xA;.btn-download:hover {&#xA;  background-color: #337ecc;&#xA;}&#xA;&#xA;.btn-download.loading {&#xA;  opacity: 0.8;&#xA;  cursor: not-allowed;&#xA;}&#xA;&#xA;.descriptions {&#xA;  border: 1px solid #ebeef5;&#xA;  border-radius: 4px;&#xA;  overflow: hidden;&#xA;}&#xA;&#xA;.desc-row {&#xA;  display: flex;&#xA;  border-bottom: 1px solid #ebeef5;&#xA;}&#xA;&#xA;.desc-row:last-child {&#xA;  border-bottom: none;&#xA;}&#xA;&#xA;.desc-label {&#xA;  width: 30%;&#xA;  padding: 12px 15px;&#xA;  background-color: #fafafa;&#xA;  color: #606266;&#xA;  font-size: 14px;&#xA;}&#xA;&#xA;.desc-content {&#xA;  flex: 1;&#xA;  padding: 12px 15px;&#xA;  color: #303133;&#xA;  font-size: 14px;&#xA;}&#xA;&#xA;.loading-indicator {&#xA;  text-align: center;&#xA;  padding: 20px;&#xA;  color: #606266;&#xA;}&#xA;&#xA;.error-message {&#xA;  text-align: center;&#xA;  padding: 20px;&#xA;  color: #f56c6c;&#xA;}&#xA;&#xA;.svg-container {&#xA;  width: 100%;&#xA;  height: 100%;&#xA;  display: flex;&#xA;  align-items: center;&#xA;  justify-content: center;&#xA;}&#xA;&#xA;.svg-image {&#xA;  width: 80%;&#xA;  height: 80%;&#xA;}&#xA;&#xA;@media (max-width: 768px) {&#xA;  .logo-grid {&#xA;    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));&#xA;    gap: 10px;&#xA;  }&#xA;  &#xA;  .detail-drawer {&#xA;    width: 100%;&#xA;  }&#xA;}&#xA;&lt;/style&gt;&#xA;&lt;script&gt;&#xA;// 全局变量&#xA;let tableData = [];&#xA;let currentPage = 1;&#xA;let pageSize = 48;&#xA;let totalTasks = 0;&#xA;let searchKeyword = &#39;keda&#39;;&#xA;let currentFileData = null;&#xA;let totalLogo = 0;&#xA;let downloadLoadingStatus = false;&#xA;&#xA;// DOM元素引用&#xA;const dynamicContent = document.getElementById(&#39;dynamic-content&#39;);&#xA;&#xA;// 初始化&#xA;document.addEventListener(&#39;DOMContentLoaded&#39;, function() {&#xA;  fetchData();&#xA;});&#xA;&#xA;// 格式化文件大小&#xA;function formatFileSize(size) {&#xA;  if (size &lt; 1024) {&#xA;    return size + &#39;B&#39;;&#xA;  } else if (size &lt; 1024 * 1024) {&#xA;    return (size / 1024).toFixed(2) + &#39;KB&#39;;&#xA;  } else if (size &lt; 1024 * 1024 * 1024) {&#xA;    return (size / (1024 * 1024)).toFixed(2) + &#39;MB&#39;;&#xA;  } else {&#xA;    return (size / (1024 * 1024 * 1024)).toFixed(2) + &#39;GB&#39;;&#xA;  }&#xA;}&#xA;&#xA;// 格式化时间&#xA;function formatTime(time) {&#xA;  if (!time) return &#39;&#39;;&#xA;  return new Date(time).toLocaleString(&#39;zh-CN&#39;);&#xA;}&#xA;&#xA;// 获取预览图片URL&#xA;function getPreviewImageUrl(url) {&#xA;  if (!url) return &#39;&#39;;&#xA;  // 将文件后缀的最后一个点替换为 _thumbn.&#xA;  url = url.replace(/\.\w+$/, &#39;_thumb$&amp;&#39;);&#xA;  // 替换http://为https://&#xA;  url = url.replace(&#39;http://&#39;, &#39;https://&#39;);&#xA;  return url.replace(&#39;https://&#39;, &#39;https://file.cncfstack.com/&#39;);&#xA;}&#xA;&#xA;function getSvgUrl(url) {&#xA;  if (!url) return &#39;&#39;;&#xA;  url = url.replace(&#39;http://&#39;, &#39;https://&#39;);&#xA;  return url.replace(&#39;https://&#39;, &#39;https://file.cncfstack.com/&#39;);&#xA;}&#xA;&#xA;// 处理分页大小变化&#xA;function handleSizeChange(event) {&#xA;  pageSize = parseInt(event.target.value);&#xA;  currentPage = 1;&#xA;  fetchData();&#xA;}&#xA;&#xA;// 处理当前页变化&#xA;function handleCurrentChange(page) {&#xA;  currentPage = page;&#xA;  fetchData();&#xA;}&#xA;&#xA;// 获取任务列表&#xA;function fetchData() {&#xA;  const params = new URLSearchParams({&#xA;    page: currentPage,&#xA;    page_size: pageSize,&#xA;    sync_status: &#39;success&#39;,&#xA;    order_by: &#39;created_at DESC&#39;,&#xA;    file_type: &#39;logo&#39;&#xA;  });&#xA;  &#xA;  if (searchKeyword) {&#xA;    params.append(&#39;search_keyword&#39;, searchKeyword);&#xA;  }&#xA;  &#xA;  const url = `https://server.cs.cncfstack.com/api/v1/resources/file/filesync?${params.toString()}`;&#xA;  &#xA;  fetch(url)&#xA;    .then(response =&gt; response.json())&#xA;    .then(data =&gt; {&#xA;      tableData = data.data || [];&#xA;      totalTasks = data.total || 0;&#xA;      renderPage();&#xA;    })&#xA;    .catch(error =&gt; {&#xA;      console.error(&#39;获取Logo文件失败:&#39;, error);&#xA;      dynamicContent.innerHTML = `&#xA;        &lt;div class=&#34;error-message&#34;&gt;&#xA;          &lt;p&gt;获取Logo文件失败，请稍后重试。&lt;/p&gt;</description>
    </item>
    <item>
      <title>代码仓库</title>
      <link>https://cncfstack.com/p/keda/code/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cncfstack.com/p/keda/code/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; class=&#34;iframe-container&#34; src=&#34;https://gitea.cncfstack.com/kedacore&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://gitea.cncfstack.com/kedacore&#34;&gt;https://gitea.cncfstack.com/kedacore&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;&#xA;&#xA;&lt;style&gt;&#xA;.iframe-container {&#xA;  margin-top: 15px;&#xA;}&#xA;&lt;/style&gt;</description>
    </item>
    <item>
      <title>博客</title>
      <link>https://cncfstack.com/p/keda/news/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cncfstack.com/p/keda/news/</guid>
      <description>&lt;div id=&#34;blog-app&#34;&gt;&#xA;  &lt;!-- 加载状态 --&gt;&#xA;  &lt;div id=&#34;loading-state&#34; class=&#34;loading-state&#34;&gt;&#xA;    &lt;div class=&#34;loading-spinner&#34;&gt;&lt;/div&gt;&#xA;    &lt;p&gt;文档加载中...&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;iframe &#xA;    id=&#34;blog-iframe&#34;&#xA;    src=&#34;&#34;&#xA;    class=&#34;full-width-iframe&#34;&#xA;    scrolling=&#34;auto&#34;&#xA;    onload=&#34;onIframeLoad()&#34;&#xA;  &gt;&lt;/iframe&gt;&#xA;&lt;/div&gt;&#xA;&lt;style&gt;&#xA;/* 原有样式保持不变 */&#xA;.image-list-container {&#xA;  max-width: 1200px;&#xA;  margin: 2rem auto;&#xA;  padding: 0 1rem;&#xA;}&#xA;&#xA;.image-list-title {&#xA;  text-align: center;&#xA;  margin-bottom: 2rem;&#xA;  color: #333;&#xA;  font-size: 1.8rem;&#xA;}&#xA;&#xA;.image-grid {&#xA;  display: grid;&#xA;  grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));&#xA;  gap: 1.5rem;&#xA;}&#xA;&#xA;.image-card {&#xA;  border: 1px solid #e1e8ed;&#xA;  border-radius: 8px;&#xA;  overflow: hidden;&#xA;  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);&#xA;  transition: transform 0.3s ease, box-shadow 0.3s ease;&#xA;  background: white;&#xA;  cursor: pointer;&#xA;}&#xA;&#xA;.image-card:hover {&#xA;  transform: translateY(-5px);&#xA;  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.15);&#xA;}&#xA;&#xA;.card-link {&#xA;  text-decoration: none;&#xA;  color: inherit;&#xA;}&#xA;&#xA;.card-header {&#xA;  background-color: #f5f8fa;&#xA;  padding: 1rem;&#xA;  border-bottom: 1px solid #e1e8ed;&#xA;}&#xA;&#xA;.card-title {&#xA;  margin: 0;&#xA;  font-size: 1.2rem;&#xA;  color: #1da1f2;&#xA;  font-weight: 600;&#xA;}&#xA;&#xA;.card-body {&#xA;  padding: 1rem;&#xA;}&#xA;&#xA;.vendor-info {&#xA;  display: flex;&#xA;  align-items: center;&#xA;  margin-bottom: 0.8rem;&#xA;}&#xA;&#xA;.vendor-icon {&#xA;  width: 32px;&#xA;  height: 32px;&#xA;  background-color: #1da1f2;&#xA;  border-radius: 50%;&#xA;  display: flex;&#xA;  align-items: center;&#xA;  justify-content: center;&#xA;  color: white;&#xA;  font-weight: bold;&#xA;  margin-right: 0.8rem;&#xA;}&#xA;&#xA;.vendor-name {&#xA;  font-weight: 500;&#xA;  color: #333;&#xA;}&#xA;&#xA;.repo-info {&#xA;  background-color: #f8f9fa;&#xA;  padding: 0.8rem;&#xA;  border-radius: 4px;&#xA;  font-family: &#39;Courier New&#39;, monospace;&#xA;  font-size: 0.9rem;&#xA;  color: #333;&#xA;  word-break: break-all;&#xA;  margin-bottom: 0;&#xA;}&#xA;&#xA;.error-message {&#xA;  text-align: center;&#xA;  color: #e02d2d;&#xA;  padding: 2rem;&#xA;  font-size: 1.1rem;&#xA;}&#xA;&#xA;.loading-message {&#xA;  text-align: center;&#xA;  padding: 2rem;&#xA;  font-size: 1.1rem;&#xA;  color: #657786;&#xA;}&#xA;&#xA;@media (max-width: 768px) {&#xA;  .image-grid {&#xA;    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));&#xA;    gap: 1rem;&#xA;  }&#xA;  &#xA;  .image-list-title {&#xA;    font-size: 1.5rem;&#xA;  }&#xA;}&#xA;&#xA;/* 新增博客页面样式 */&#xA;.blog-page {&#xA;  margin-top: -60px;&#xA;  width: 100%;&#xA;}&#xA;&#xA;.full-width-iframe {&#xA;  width: 100%;&#xA;  border: none;&#xA;  overflow: hidden;&#xA;  min-height: 600px;&#xA;}&#xA;&#xA;.loading-spinner {&#xA;  width: 40px;&#xA;  height: 40px;&#xA;  border: 4px solid #e9ecef;&#xA;  border-top: 4px solid #007bff;&#xA;  border-radius: 50%;&#xA;  animation: spin 1s linear infinite;&#xA;  margin: 0 auto;&#xA;}&#xA;&#xA;@keyframes spin {&#xA;  0% { transform: rotate(0deg); }&#xA;  100% { transform: rotate(360deg); }&#xA;}&#xA;&#xA;.loading-state {&#xA;  text-align: center;&#xA;  padding: 2rem;&#xA;}&#xA;&lt;/style&gt;&#xA;&lt;script&gt;&#xA;// 初始化 iframe URL&#xA;document.addEventListener(&#39;DOMContentLoaded&#39;, function() {&#xA;  const iframe = document.getElementById(&#39;blog-iframe&#39;);&#xA;  const currentYear = new Date().getFullYear();&#xA;  iframe.src = `https://cncfstack.com/b/tags/keda`;&#xA;  // 设置初始高度&#xA;  iframe.style.height = window.innerHeight + &#39;px&#39;;&#xA;  &#xA;  // 添加 visibilitychange 事件监听器&#xA;  document.addEventListener(&#39;visibilitychange&#39;, handleVisibilityChange);&#xA;});&#xA;&#xA;function hideInternalNav() {&#xA;  const iframe = document.getElementById(&#39;blog-iframe&#39;);&#xA;  if (!iframe) return;&#xA;&#xA;  try {&#xA;    const iframeDoc = iframe.contentDocument;&#xA;    if (iframeDoc) {&#xA;      // 隐藏导航栏元素&#xA;      const navElement = iframeDoc.querySelector(&#39;nav.td-navbar&#39;);&#xA;      if (navElement) {&#xA;        navElement.style.display = &#39;none&#39;;&#xA;      }&#xA;&#xA;      // 隐藏 header 元素&#xA;      const headerElement = iframeDoc.querySelector(&#39;header&#39;);&#xA;      if (headerElement) {&#xA;        headerElement.style.display = &#39;none&#39;;&#xA;      }&#xA;&#xA;      // 隐藏页面底部元素&#xA;      const navFooterElement = iframeDoc.querySelector(&#39;footer.td-footer&#39;);&#xA;      if (navFooterElement) {&#xA;        navFooterElement.style.display = &#39;none&#39;;&#xA;      }&#xA;    }&#xA;  } catch (e) {&#xA;    console.log(&#39;无法访问 iframe 内容（可能是跨域限制）&#39;);&#xA;  }&#xA;}&#xA;&#xA;function setIframeHeight() {&#xA;  const iframe = document.getElementById(&#39;blog-iframe&#39;);&#xA;  if (!iframe) return;&#xA;&#xA;  try {&#xA;    const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;&#xA;    if (iframeDoc) {&#xA;      // 延迟执行以确保样式已应用&#xA;      setTimeout(() =&gt; {&#xA;        const height = Math.max(&#xA;          iframeDoc.body.scrollHeight,&#xA;          iframeDoc.documentElement.scrollHeight,&#xA;          iframeDoc.body.offsetHeight,&#xA;          iframeDoc.documentElement.offsetHeight,&#xA;          iframeDoc.body.clientHeight,&#xA;          iframeDoc.documentElement.clientHeight&#xA;        );&#xA;&#xA;        iframe.style.height = height + &#39;px&#39;;&#xA;      }, 100);&#xA;    }&#xA;  } catch (e) {&#xA;    // 跨域情况下的备选方案&#xA;    iframe.style.height = &#39;1200px&#39;;&#xA;  }&#xA;}&#xA;&#xA;function onIframeLoad() {&#xA;  hideInternalNav();&#xA;  setIframeHeight();&#xA;  &#xA;  // 隐藏加载状态&#xA;  const loadingState = document.getElementById(&#39;loading-state&#39;);&#xA;  if (loadingState) {&#xA;    loadingState.style.display = &#39;none&#39;;&#xA;  }&#xA;}&#xA;&#xA;function handleVisibilityChange() {&#xA;  const iframe = document.getElementById(&#39;blog-iframe&#39;);&#xA;  if (!document.hidden &amp;&amp; iframe) {&#xA;    // 页面变为可见时重新调整 iframe 高度&#xA;    setTimeout(() =&gt; {&#xA;      setIframeHeight();&#xA;    }, 300);&#xA;  }&#xA;}&#xA;&#xA;// 窗口大小改变时调整 iframe 高度&#xA;window.addEventListener(&#39;resize&#39;, function() {&#xA;  const iframe = document.getElementById(&#39;blog-iframe&#39;);&#xA;  if (iframe) {&#xA;    setIframeHeight();&#xA;  }&#xA;});&#xA;&lt;/script&gt;</description>
    </item>
    <item>
      <title>搜索结果</title>
      <link>https://cncfstack.com/p/keda/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cncfstack.com/p/keda/search/</guid>
      <description></description>
    </item>
    <item>
      <title>官方网站</title>
      <link>https://cncfstack.com/p/keda/website/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cncfstack.com/p/keda/website/</guid>
      <description>&lt;section id=&#34;td-cover-block-0&#34; class=&#34;row td-cover-block td-cover-block--height-auto js-td-cover td-overlay td-overlay--dark -bg-primary&#34;&gt;&#xA;  &lt;div class=&#34;col-12&#34;&gt;&#xA;    &lt;div class=&#34;container td-overlay__inner&#34;&gt;&#xA;      &lt;div class=&#34;text-center&#34;&gt;&#xA;        &lt;h1 class=&#34;display-1 mt-0 mt-md-5 pb-4&#34;&gt;keda 官方网站&lt;/h1&gt;&#xA;        &#xA;        &lt;div class=&#34;pt-3 lead&#34;&gt;&#xA;          &#xA;              软件项目第一手资料除了&lt;strong&gt;源码&lt;/strong&gt;，就是&lt;strong&gt;官网&lt;/strong&gt;&#xA;          &#xA;        &lt;/div&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;&lt;/section&gt;&#xA;&#xA;&lt;div&gt;&lt;a id=&#34;td-block-1&#34; class=&#34;td-offset-anchor&#34;&gt;&lt;/a&gt;&lt;/div&gt;&#xA;&lt;section class=&#34;row td-box td-box--dark td-box--height-auto&#34;&gt;&#xA;&lt;div class=&#34;col&#34;&gt;&#xA;&lt;div class=&#34;row&#34;&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;col-lg-4 mb-5 mb-lg-0 text-center&#34;&gt;&#xA;&lt;div class=&#34;mb-4 h1&#34;&gt;&#xA;  &lt;i class=&#34;fas fa-lightbulb&#34;&gt;&lt;/i&gt;&#xA;&lt;/div&gt;&#xA;&lt;h4 class=&#34;h3&#34;&gt;官网镜像（English）&lt;/h4&gt;&#xA;&lt;div class=&#34;mb-0&#34;&gt;&#xA;&lt;p&gt;项目的官网在国内的镜像站，该网站的英语版本，会定时自动更新与官网同步&lt;/p&gt;&#xA;&lt;div class=&#34;mx-auto&#34;&gt;&#xA;&#x9;&lt;a class=&#34;btn btn-lg btn-primary me-3 mb-4&#34; href=&#34;https://keda.website.cncfstack.com&#34; target=&#34;_blank&#34;&gt;&#xA;&#x9;&#x9;访问网站 &lt;i class=&#34;fa-solid fa-circle-right ms-2&#34;&gt;&lt;/i&gt;&#xA;&#x9;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;col-lg-4 mb-5 mb-lg-0 text-center&#34;&gt;&#xA;&lt;div class=&#34;mb-4 h1&#34;&gt;&#xA;  &lt;i class=&#34;fas fa-lightbulb&#34;&gt;&lt;/i&gt;&#xA;&lt;/div&gt;&#xA;&lt;h4 class=&#34;h3&#34;&gt;官网&lt;/h4&gt;&#xA;&lt;div class=&#34;mb-0&#34;&gt;&#xA;&lt;p&gt;项目实际官网，由该项目的社区共同维护，是最新最权威的项目网站&lt;/p&gt;&#xA;&lt;div class=&#34;mx-auto&#34;&gt;&#xA;&#x9;&lt;a class=&#34;btn btn-lg btn-primary me-3 mb-4&#34; href=&#34;https://keda.sh&#34; target=&#34;_blank&#34;&gt;&#xA;&#x9;&#x9;访问网站 &lt;i class=&#34;fa-solid fa-circle-right ms-2&#34;&gt;&lt;/i&gt;&#xA;&#x9;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/section&gt;</description>
    </item>
    <item>
      <title>论坛</title>
      <link>https://cncfstack.com/p/keda/discourse/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cncfstack.com/p/keda/discourse/</guid>
      <description>&lt;section id=&#34;td-cover-block-0&#34; class=&#34;row td-cover-block td-cover-block--height-full js-td-cover td-overlay td-overlay--dark -bg-primary&#34;&gt;&#xA;  &lt;div class=&#34;col-12&#34;&gt;&#xA;    &lt;div class=&#34;container td-overlay__inner&#34;&gt;&#xA;      &lt;div class=&#34;text-center&#34;&gt;&#xA;        &lt;h1 class=&#34;display-1 mt-0 mt-md-5 pb-4&#34;&gt;论坛&lt;/h1&gt;&#xA;        &#xA;        &lt;div class=&#34;pt-3 lead&#34;&gt;&#xA;          &#xA;              &lt;p&gt;开放的社区论坛，自由的技术交流&lt;/p&gt;&#xA;&lt;div class=&#34;mx-auto&#34;&gt;&#xA;&#x9;&lt;a class=&#34;btn btn-lg btn-primary me-3 mb-4&#34; href=&#34;https://discourse.cncfstack.com/tag/keda/&#34; target=&#34;_blank&#34;&gt;&#xA;&#x9;&#x9;访问论坛 &lt;i class=&#34;fa-solid fa-circle-right ms-2&#34;&gt;&lt;/i&gt;&#xA;&#x9;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;          &#xA;        &lt;/div&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;&lt;/section&gt;</description>
    </item>
  </channel>
</rss>
