我有一个使用嵌入式视频的网站(通过 youtube 的分享 -> 嵌入),当我在 Chrome 中打开 DevTools 时,我看到一个错误:
无法识别的功能:“网络共享”。
(匿名)@react-dom.product….js?ver=16.14.0:184
当我单击react-dom.Production...链接时,我看到以下代码:
var si = /^(.*)[\\\/]/, Q = "function" === typeof Symbol && Symbol.for, Pc = Q ? Symbol.for("react.element") : 60103, gb = Q ? Symbol.for("react.portal") : 60106, Ma = Q ? Symbol.for("react.fragment") : 60107, Af = Q ? Symbol.for("react.strict_mode") : 60108, kc = Q ? Symbol.for("react.profiler") : 60114, Cf = Q ? Symbol.for("react.provider") : 60109, Bf = Q ? Symbol.for("react.context") : 60110, Hj = Q ? Symbol.for("react.concurrent_mode") : 60111, zd = Q ? Symbol.for("react.forward_ref") : 60112, lc = Q ? Symbol.for("react.suspense") : 60113, yd = Q ? Symbol.for("react.suspense_list") : 60120, Ad = Q ? Symbol.for("react.memo") : 60115, Ef = Q ? Symbol.for("react.lazy") : 60116, Df = Q ? Symbol.for("react.block") : 60121, zf = "function" === typeof Symbol && Symbol.iterator, od, xh = function(a) {
return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function(b, c, d, e) {
MSApp.execUnsafeLocalFunction(function() {
return a(b, c, d, e)
})
}
: a
}(function(a, b) {
if ("http://www.w3.org/2000/svg" !== a.namespaceURI || "innerHTML"in a)
a.innerHTML = b;
else {
od = od || document.createElement("div");
od.innerHTML = "<svg>" + b.valueOf().toString() + "</svg>";
for (b = od.firstChild; a.firstChild; )
a.removeChild(a.firstChild);
for (; b.firstChild; )
a.appendChild(b.firstChild)
}
}),
我不知道该怎么理解(据说,这都是属于 184 的代码),因为我是 JavaScript 和 React 新手。
我可以在我的网站上修复此错误吗?如果是这样,怎么办?或者这是 YouTube 的问题?
我尝试在网上到处查找,但没有找到任何对我的特定错误的引用。我考虑过从 iframe 嵌入代码中删除网络共享,但要浏览很多视频,哈哈。
iframe 嵌入代码示例:
<iframe width="241" height="143" src="https://www.youtube-nocookie.com/embed/youtubeid" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
这不是您网站的问题,并且似乎不会产生负面影响。这是 Chrome 桌面版的一个错误,不支持 Web Share。
如果 iframe 要使用 Web Share API,则从 Chrome 110 开始
需要将此功能添加到 iframe 的
allow
属性中。 YouTube 在其嵌入代码中指定了它。但桌面版 Chrome 无法识别它。
Chrome 有一个针对新行为的 测试站点 ,链接自 他们自己的功能跟踪器 ,该网站也显示了警告。
如果web-share
存在,您可以
尝试仅包含
navigator.canShare
位。这将删除警告。但无论如何它是无害的。比如:
const myIframe = ...;
const hasWebShare = 'canShare' in navigator;
if (hasWebShare) {
myIframe.allow = 'web-share';
}
但一般不值得。