首頁 > web前端 > js教程 > 如何無縫偵測和修改 YouTube 頁面導航?

如何無縫偵測和修改 YouTube 頁面導航?

Mary-Kate Olsen
發布: 2024-12-04 05:24:11
原創
279 人瀏覽過

How Can I Detect and Modify YouTube Page Navigation Seamlessly?

將無縫頁面修改整合到YouTube 導覽

偵測YouTube 上的頁面導覽

與傳統方式不同對於在導航時重新加載頁面的網站,YouTube採用了一種替換歷史狀態的技術,避免了內容腳本

頁面轉換檢測方法

要檢測YouTube 上的頁面轉換,請考慮以下方法:

  • 後台腳本(MV3 Service Worker): 利用webNavigation API 或選項卡API。
  • 內容腳本和導航成功事件:在現代 Chrome 中可用。
  • 內容腳本和 YouTube 的自訂事件:利用 'yt-navigate -start' 或 'yt-navigate-finish'事件。

實作解決方案

manifest.jso n:

{
  "matches": ["*://*.youtube.com/*"],
  "js": ["content.js"],
  "run_at": "document_start"
}
登入後複製

content.js:

document.addEventListener('yt-navigate-start', process);
if (document.body) process();
else document.addEventListener('DOMContentLoaded', process);
登入後複製

頁面處理函數修改:

function process() {
  if (!location.pathname.startsWith('/playlist')) return;
  var seconds = [...document.getElementsByClassName('timestamp')]
    .reduce((sum, ts) => {
      const minsec = ts.textContent.split(':');
      return sum + minsec[0] * 60 + minsec[1] * 1;
    }, 0);

  if (!seconds) {
    console.warn('Empty playlist');
    return;
  }

  const timeHMS = new Date(seconds * 1000)
    .toUTCString()
    .split(' ')[4]
    .replace(/^[0:]+/, '');

  document
    .querySelector('.pl-header-details')
    .insertAdjacentHTML('beforeend', `<li>Length: ${timeHMS}</li>`);
}
登入後複製

以上是如何無縫偵測和修改 YouTube 頁面導航?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板