サポート » 使い方全般 » カスタムHTMLのブロックでJavaScriptが適用されない

  • 解決済 smartat

    (@smartat)


    標題の通りです。
    固定ページのカスタムHTMLブロックにて、iframeでPDFを埋め込みました。

    header.php の body タグに、右クリックを禁止するコードを追記しました。
    【変更前】
    </head>
    <body <?php body_class(); ?>>
    <?php do_action( ‘wp_body_open’ ); ?>
    【変更後】
    </head>
    <body <?php body_class(); ?>oncontextmenu=”return false;”>
    <?php do_action( ‘wp_body_open’ ); ?>

    そうすると、ページのほかの部分では右クリックができなくなったのですが、カスタムHTMLブロック内は右クリック→メニューボックスが出てしまいます。

    カスタムHTMLブロック内で右クリックを無効化したいのですが、どうすればよいでしょうか。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • Aki Hamano

    (@wildworks)

    @smartat さん

    こんにちは。
    iframeは親ウィンドウとは別のdocumentオブジェクトを持つので、そのコードではiframe内の右クリックを無効化する事は出来ません。
    これはカスタムHTMLブロックの問題ではなく、HTMLの仕様です。

    例えば、ページ内のiframeオブジェクト全てで右クリックを禁止する場合は、以下のようになります。

    <script>
    // ページの読み込みを待つ
    window.onload = function() {
      // 現在のウィンドウのサブフレームを取得する
      const frames = window.frames;
      // サブフレームを一つずつループする
      for (let i = 0; i < frames.length; i++) {
        // iframe内での右クリックを禁止する
        frames[i].document.oncontextmenu = function(){
          return false;
        };
      }
    };
    </script>

    ただし、埋め込まれたリソースが外部のものであるならば、クロスドメインの問題も出てくると思いますので、一度調べてみて下さい。

    shokun0803

    (@shokun0803)

    smartatさん、こんにちは。

    多分ですが…

    固定ページのカスタムHTMLブロックにて、iframeでPDFを埋め込みました。

    と記載されていますので、該当箇所は別サイトもしくは別ページとして動作していると思われます。
    ブラウザのデベロッパーツール等にて該当箇所の HTML を確認頂ければ、 iframe タグの内側に再度<html>から始まる記述が入っていると思います。
    ifreme 内に同様の JavaScript の記述を埋め込めれば可能かもしれません(未検証)。

    ご参考になれば。

    トピック投稿者 smartat

    (@smartat)

    @wildworks さん
    @shokun0803 さん

    お二方とも、ご丁寧に教えてくださりありがとうございます。
    もう少し検証し、ほかの手法も考えてみます。

    >ifreme 内に同様の JavaScript の記述を埋め込めれば可能かもしれません(未検証)
    こちらについては不可でした。

    ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムHTMLのブロックでJavaScriptが適用されない」には新たに返信することはできません。