質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

3623閲覧

iframe内で表示しているPDFのスクロール量を測りたい

HHaaaaa

総合スコア10

iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/03 10:27

サイトの利用規約等でよくある、一定以上、もしくは規約の末文までスクロールをしないと、「次へ」ボタンが活性化しないような仕組みを実装したいと思っています。

ただし、規約部分の改定は容易に行えるよう、PDFとして準備を行い、そのPDFを差し替えるだけで更新を行えるようなフローにしたいと考えています。

そこで、HTMLのなかにiframeを用いて表示しているPDFのスクロール量を計測し、ボタンの活性、非活性の切り替えを行いたいのですが、このiframeで表示しているPDFのスクロール量を取得することができなく、困っています。

もしiframeで表示しているPDFのスクロール量が取得できないのであれば、大人しく規約用の別テンプレートを作り、それを使用するつもりですが、できる限りPDFで行いたいと思っており、ご教示いただければと思っております。

現在スクロールの取得で試しているコードは以下です。

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6</head> 7<body> 8 <iframe src="./term.pdf" id="iframePDF"></iframe> 9</body> 10<script> 11 12 document.addEventListener('DOMContentLoaded', function () { 13 14 var iframe = document.getElementsByTagName('iframe') 15 16 document.addEventListener('DOMContentLoaded', function() { 17 iframe.addEventListener('load', (function (element) { 18 return function() { 19 element.contentWindow.addEventListener('scroll', onScroll); 20 }; 21 })(iframe, false)); 22 }, false); 23 24 function onScroll() { 25 console.log('on scroll !!'); 26 } 27 28 }); 29</script> 30</html>

以下の箇所をterm.htmlや、term.txtに変更した状態では、スクロール中の判定が取れているのは確認できています。

HTML

1<iframe src="./term.pdf" id="iframePDF"></iframe>

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

目的のオブジェクトにたどり着いていないようなので、以下をお試しになってはいかがですか?

contentWindow プロパティは、<iframe> 要素 の Window オブジェクトを返します。

HTMLIFrameElement.contentWindow - Web API | MDN

動作の確認をしたわけではありませんが……

訂正

試してみましたが、iframeだけではなくて、embed要素のスクロールイベントも取れませんでした。置換要素の内部イベントは取得できないのかもしれません。

PDF.jsで、試してみたところ、こちらはスクロールイベントが発火し、scrollTopを参照することができましたので、お試しになってはいかがですか?

投稿2020/06/04 03:53

編集2020/06/04 04:53
Lhankor_Mhy

総合スコア36912

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2020/06/04 03:54

ああ、すみません、コードを見間違えました……
Lhankor_Mhy

2020/06/04 04:53

訂正して、別の回答にしました。
HHaaaaa

2020/06/05 04:09

ご回答ありがとうございます。 pdf.jsを使用したことはないため、調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問