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

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

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

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

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

Monaca

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

Q&A

解決済

1回答

8185閲覧

iOS+safariでwindow.onloadが動かない問題について

hitomi_

総合スコア10

HTML5

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

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

Monaca

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

0グッド

0クリップ

投稿2020/02/14 05:35

Monacaでアプリ開発に挑戦していますが、うまくいきません。
ローカル環境でWindowsのchromeとsafariでは動作確認できましたが、MonacaのクラウドIDEにファイルをアップロードすると、iPhone7にインストールしているMonacaデバッガーでは「window.onload」が動きません。

Javascript

1 var i = 0 ; 2 //読み込み時ローカルストレージからロード 3 window.onload = function(){ 4 //ローカルストレージの読み込み 5 var argument_service_name = localStorage.getItem('service_name_' + i ); 6 var argument_service_id = localStorage.getItem('service_id_' + i ); 7 var argument_service_pass = localStorage.getItem('service_pass_' + i ); 8 //変数に中身があるか確認 9 while(argument_service_name !== null) { 10 //ローカルストレージから挿入 11 document.getElementById('service_name_' + i ).value = argument_service_name; 12 document.getElementById('service_id_' + i ).value = argument_service_id; 13 document.getElementById('service_pass_' + i ).value = argument_service_pass; 14 //次のテーブルを作成、カウントアップ 15 AddTable(); 16 //ローカルストレージの再読み込み 17 argument_service_name = localStorage.getItem('service_name_' + i ); 18 argument_service_id = localStorage.getItem('service_id_' + i ); 19 argument_service_pass = localStorage.getItem('service_pass_' + i ); 20 } 21 }

試したこと:onpageshow…動作しませんでした

html

1<body onpageshow="Load();">

Javascript

1 var i = 0 ; 2 //読み込み時ローカルストレージからロード 3 function Load(){ 4 //ローカルストレージの読み込み 5 var argument_service_name = localStorage.getItem('service_name_' + i ); 6 var argument_service_id = localStorage.getItem('service_id_' + i ); 7 var argument_service_pass = localStorage.getItem('service_pass_' + i ); 8 //変数に中身があるか確認 9 while(argument_service_name !== null) { 10 //ローカルストレージから挿入 11 document.getElementById('service_name_' + i ).value = argument_service_name; 12 document.getElementById('service_id_' + i ).value = argument_service_id; 13 document.getElementById('service_pass_' + i ).value = argument_service_pass; 14 //次のテーブルを作成、カウントアップ 15 AddTable(); 16 //ローカルストレージの再読み込み 17 argument_service_name = localStorage.getItem('service_name_' + i ); 18 argument_service_id = localStorage.getItem('service_id_' + i ); 19 argument_service_pass = localStorage.getItem('service_pass_' + i ); 20 } 21 }

何かいい方法はないでしょうか。知恵をお貸しください。

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

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

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

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

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

otak-lab

2020/02/14 07:37

手持ちのiPhone6s(iOS13.3)のMonacaデバッガーで、window.onload = function () { alert("onload"); };を実行するとalertが表示されますが、iPhone7では表示されないということでしょうか?
hitomi_

2020/02/14 09:10

ありがとうございます。私のiPhone7(ios13.3)ではだめでした…
guest

回答1

0

ベストアンサー

こちらが原因でしょうか。 window.onLoadはデスクトップブラウザ向けで、プレビューで動くのはそのせいです。

https://stackoverflow.com/questions/35809646/window-onload-is-not-firing-in-hybrid-app

Monacaの場合は ondeviceready イベントを使います。これはアプリ用なので、DOMContentLoadedイベントも併用するといいかと思います。

js

1// スマホアプリの場合はondeviceready、プレビューはDOMContentLoadedを利用 2// ondevicereadyからdevicereadyに修正済み 3const event = window.cordova ? 'deviceready' : 'DOMContentLoaded'; 4document.addEventListener(event, function() { 5 // 処理をここに 6}, false);

投稿2020/02/14 08:02

編集2020/02/14 09:40
moongift

総合スコア250

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

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

hitomi_

2020/02/14 09:36

教えていただいたコードをそのまま書きましたが、やはりiPhone7のデバッガーでは動かなかったので、以下のように書いたところ、動作しました!ありがとうございます! ```javascript document.addEventListener('DOMContentLoaded', function() { Load(); }, false); document.addEventListener('deviceready', function() { Load(); }, false); function Load(){ //読み込み時処理 } ```
moongift

2020/02/14 09:39

失礼しました。ondevicereadyではなくdevicereadyですね…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問