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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1436閲覧

safari, firefox で オーバーレイの画像をロード後、fadeOutできない jQuery

penny271

総合スコア9

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/04/19 03:31

編集2020/04/19 04:21

前提・実現したいこと

safari, firefox でも jQueryのコードを作動させたい。

ここに質問の内容を詳しく書いてください。
画面いっぱいにロゴを表示させ、画面をロード後、2.2秒かけてfadeOutする動きをつけたいのですが、safariとFirefoxではfadeOutされず、いつまでもロゴが画面に残ったままになってしまいます。リロードしても変わらずfadeOutすることはありません。
※どういうタイミングかはわからないのですが、たまにsafariでもfirefoxでもリロードをすると動くことが有るのですが、大体動きません。

どういう状況なのかわかるようにコードの内容と同じサイトをアップしております。
こちらから問題をご確認していただけますと幸いです。(Chrome と Edgeでは問題なく動作します。SafariとFirefoxが動きません。)
リンク内容

ChromeとMicrosoft Edgeでは問題なく、fadeOutします。

コンソールを見ても、エラーメッセージは表示されておりません。

発生している問題・エラーメッセージ

エラーメッセージ

なし

該当のソースコード

HTML

<!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script type="text/javascript" src="js/func.js"></script> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>About</title> <meta name="description" content="XXXXXX"> <link href="https://fonts.googleapis.com/css?family=Philosopher&display=swap" rel="stylesheet"> <link rel="stylesheet" href="css/styles.css"> </head> <body> <!-- オーバーレイ --> <div id ="overlay"> <img src="images/BlueTree-logo-white.png" alt="ローディング用ロゴ" id="loading"> </div> </body> </html>

該当のソースコード

jQuery

// ロード終了後、オーバーレイ非表示 $(function(){ $(window).on("load", function(){ $("#overlay").fadeOut(2200) }); });

該当のソースコード

CSS

#overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; background-color: #fff; }

試したこと

他にもtoggleやスムーススクロールのjqueryのコードが合ったので、どこかで競合しているのかと思い、全部、削除してみましたが、結果は変わりませんでした。

FirefoxでjQueryが動かない原因の1つが「head部分の宣言抜け」です。headタグに以下のjavascript宣言が入っていないと、コードを記述してもjQueryは動作しません。とあったので以下をheadに記述しましたが、Firefoxでもsafariでも動きませんでした。
<meta http-equiv="Content-Script-Type" content="text/javascript">

他にもググってみましたが、具体的な解決策を見つけることができませんでした。

補足情報(FW/ツールのバージョンなど)

safariのバージョン:13.0.5 (15608.5.11)
Firefoxのバージョン:75.0 Firefox Release April 7, 2020 ← 最新と出ていました。
コーディングはvscodeでしております。

どういう状況なのかわかるようにコードの内容と同じサイトをアップしております。
こちらから問題をご確認していただけますと幸いです。(Chrome と Edgeでは問題なく動作します。SafariとFirefoxが動きません。)
リンク内容

ご回答いただけますと幸いです。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

$(function(){});DOMContentLoadedのタイミングで実行されるので、loadとほぼ同時に実行されているのでは。(loadイベントはロード後に設定しても発報しない)

js

1// $(function(){ 2 $(window).on("load", function(){ 3 $("#overlay").fadeOut(2200) 4 }); 5// });

また直接は関係ありませんが、実際のコードが下記のようになっており、id="loading"が重複しています。

HTML

1 <!-- オーバーレイ --> 2 <div id ="overlay"> 3 <div id="loading"></div> 4 <img src="images/BlueTree-logo-white.png" alt="ローディング用ロゴ" id="loading"> 5 </div>

投稿2020/04/19 19:14

kei344

総合スコア69400

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

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

penny271

2020/04/19 21:07

ご回答ありがとうございます! 上記のようにしたところ、だいぶ改善されたのですが、10回に2、3回ほど、safariとfirefoxで動かないことがありました。 ”loadとほぼ同時に実行されているのでは。”というお言葉をヒントに、delayを直前につけることで live server上でも、サーバー上でも問題なく動作させることができました。 $(window).delay(800).on("load", function(){ $("#overlay").fadeOut(2200) }); 自分では解決できず、色々思考錯誤し、時間がかかっていた問題だったので、本当に解決してくださり感謝しております。スッキリしました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問