1

Firefox でフルスクリーンをリクエストしようとすると、この問題が発生します。

Request for fullscreen was denied because of FeaturePolicy directives

allowページが読み込まれる前に iframe ノードの属性を関数を使用しallow='autoplay; fullscreen'allow='autoplay; fullscreen *'javascriptに設定しようとしていますsetAttributeが、うまく機能しますが、ページが読み込まれた後に設定すると機能しません。DOM が値を変更したように見えますが、効果はありません。ソースを同じに変更してiframeをリロードしようとしましたが、リロード後に空白になります。

4

1 に答える 1

0

テストが示すように、スクリプトによって属性を変更してもallow=、iframe 内で機能する機能ポリシーのアクセス許可は変更されません。
これは、allow=属性のアクセス許可が DOM ビルドの段階で適用されるためです。

したがって、変更された機能ポリシーのアクセス許可を適用するには、iframe コンテンツを再読み込みする必要があります。
iframe コンテンツを再読み込みすると、新しい権限が適用されます。そのようにしてみてください:

iframe = document.getElementById('id_of_frame');
iframe.setAttribute('allow', "autoplay; fullscreen *;");
iframe.src = iframe.src;

どちらも iframe 内のすべての要素がフルスクリーン モードを使用できることを意味しallow="fullscreen"ます。allow="fullscreen *"

これは<iframe>、パーミッションが iframe の属性で URL の起点を表すものにfullscreen *変換されるためです。 上記のテストでこれを観察するか、自分で確認できます。fullscreen 'src''src'src=

// array of allowed origins for 'fullscreen' feature:
var origins = featurePolicy.getAllowlistForFeature('fullscreen');

中は<iframe src='https://example.com' allow="fullscreen *">ありoriginsますhttps://example.comがありません*

ワイルドカード*は、機能ポリシーの HTTP ヘッダーでのみ意味があります。これは、ページのいずれかfullscreen *フルスクリーン モードを許可する場合に限ります。<iframe src='...'>

于 2021-08-02T20:22:59.487 に答える