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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

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

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

3042閲覧

popPage,pushPageメッソッドの利用について

satosatope

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

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

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2018/02/01 02:13

現在、アンケート回答アプリケーションをmonaca上に作成中の初心者です。

公式ガイドを参考に、12問の設問に対し1問1ページのHTMLを作り、各ページをpushPage、popPageで遷移できるようにしています。

回答を進めていくと、読み込みが徐々に遅くなり、12問目修了後に、inputタグで入力欄を作ったところ、表示が壊れてしまいます。

pushPage、popPageは複数ページの遷移には不適切なのでしょうか?

ページを複数持つ場合には、HTMLを直接読み込んだほうが良いのでしょうか?

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

pushPage、popPageは、画面遷移を行うための機能とは厳密には異なります。
実際の動作としては、pushPageは「画面を重ねる」、popPageは「積まれた現在の画面を取り除く」という動作を行います。

こちらが参考になるかと思います。

よって、pushPageを利用して12ページもの画面を上に積み上げ続けると、実際には、その下に1~11ページ分の画面が動作したままの状態になっています。そのためスマートフォンの処理能力を圧迫し、動作が重くなっていると予想されます。
ページを複数持つ場合でもpushPageやpopPageは十分有用ですが、このケースでは処理能力を超えてしまったということでしょう。

このような場合、1ページ毎の回答量を増やす(例えば1ページに3問ずつの回答欄を作る)、pushPageではなくreplacePage(現在の画面を入れ替える)を利用する(ただしその場合、画面が積み重なっていませんのでpopPageは利用できなくなります)などの対策を考える必要がありますね。

投稿2018/02/01 02:40

akabee

総合スコア1947

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

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

satosatope

2018/02/01 04:16

ご丁寧にありがとうございます。 replacePageで画面を切り替えていく場合、前のページで入力された状態を保ったまま、popPageのようにbackすることは、難しいでしょうか?
akabee

2018/02/01 04:44

難しいというか、不可能です。replacePageは今いるページを削除して新しいページに入れ替えますので、backする対象のページはそのときに既にないためです。 それでもそのような動作を実施したい場合どうするかということですが、「前のページで入力された状態を保ったまま、popPageのようにbackする」のではなく、画面遷移は常にreplacePageで行って常に新しくページを生成するが、前の回答内容はどこかに全て保持しておいて、画面に合わせてそれを呼び出すことでページを戻っているように見せるということを行うことになります。この場合は、多少難易度が上がります。 その実装方法についてもレクチャーできなくはありませんが、初心者であるということですし、利用しているフレームワーク(JavaScriptなのかAngularJSなのかvueなのかreactなのか)等についてもヒアリングした上で回答する必要がありますので、そこにこだわるよりは、一旦「1ページ毎の回答量を増やす」や「そもそも戻ることができないようにする」等の方法で回避をしておいて、時間があれば理想の処理の実現に取り組む方針で進めることをお勧めします。
satosatope

2018/02/01 05:46

ありがとうございます。 現状、むずかいいことがよくわかりました。 すべてをスタックしていくことを回避するために、一つ前のページにbackすることは出来ても、それより前にはもどれないという仕様にしようかと思っています。 https://ja.onsen.io/v2/api/js/ons-navigator.html#method-removePage このremovePageのindexとはどのように確認したらいいのでしょうか?
akabee

2018/02/01 06:08

なるほど。ということは、常に現状のページよりも2つ前のページを削除しながら次のページに遷移しつづけるということですね。 ご質問のremovePageのindexは、私も試したことがないのでわかりません、すみません。時間があれば調べてみますが、私の回答を待つよりご自分で試したほうが早いでしょう。もしくは、こういった仕様レベルの問い合わせであれば、WEB上のドキュメントに記載されていないように見受けられますので開発元に問い合わせを行っても良いかもしれません。 確認方法としては、試行錯誤するしかないと思うのですが、 https://ja.onsen.io/v2/api/js/ons-navigator.html#properties ↑のpagesというプロパティが怪しいですね。おそらくこのpagesがarray(配列)で、初期画面がpages[0]、pushPageされたらpages[1]、page[2]・・というように増えていくのではないかと予想します。 この仮説が正しければ、ひとまず最初にページを削除するページ2の段階ではindex「0」のページを削除することになりますので、removePage(0)を実行すればよいのではないかと思います。 次が問題で、removePageされた後にpagesがどうなるかです。pages[0]~[2]がある状態で[0]を削除したときに、pages[0]~[1]のようにindexを前に詰めてくれるのか、pages[1]~[2]と、一度入ったindexは変更がないのか。 それによって次に削除するindexが変わりますね。前者であれば常にindex「0」を削除すれば良いですが、後者であれば0,1,2~と削除対象のindexも増えることになります。 勿論上記仮説が合っているかどうかは不明です。
satosatope

2018/02/05 15:30

ありがとうございました。無事解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問