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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-04 05:24:11271瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn