zoosewu / PTTChatOnYoutube

在Youtube上面顯示PTT推文
MIT License
65 stars 9 forks source link

[BUG] YT出現錯誤無法執行 #133

Open GaruPeng opened 1 month ago

GaruPeng commented 1 month ago

YT聊天室突然不會出現P按鈕,F12顯示如下:

bug

Youtube聊天室顯示PTT推文.user.js:2

   Uncaught TypeError: Failed to set the 'innerHTML' property on 'Element': This document requires 'TrustedHTML' assignment.
at Youtube聊天室顯示PTT推文.user.js:2:37815
at Youtube聊天室顯示PTT推文.user.js:2:220
at Youtube聊天室顯示PTT推文.user.js:2:225
at Proxy.VM5e4xp41osbn (Youtube聊天室顯示PTT推文.user.js:12430:7)
at Yt (injected-web.js:1:15586)
at Youtube聊天室顯示PTT推文.user.js:1:20
at async Gt (injected.js:1:8860)
at async injected.js:1:14358
kevin12314 commented 1 month ago

說說這個問題出現的原因,主要是Youtube改版,在 HTTP CSP 加入了require-trusted-types-for 'script' , 該CSP主要是用來防禦XSS攻擊,會強制所有的HTML DOM 注入都必須使用TrustedHTML方式。 可參考以下連結: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for

目前有支援require-trusted-types-for 'script' 的瀏覽器是Chrome、Edge、Opera等Chromium的瀏覽器, Firefox和Safari都不支援,所以這兩個瀏覽器沒受到影響

Vue新版到目前為止都還未加入因應require-trusted-types-for 'script' CSP的修正, 所以要修正的話,可能就不能用Vue了,或是要去修改Vue.js源碼