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

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

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

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

Q&A

4回答

3535閲覧

スマホでは指定のjsが挙動しないようにしたい。

rurikabut0_8888

総合スコア8

jQuery

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

0グッド

0クリップ

投稿2017/07/23 18:24

編集2017/07/24 07:03

###前提・実現したいこと
レスポンシブでサイトを制作してます。
以下のfullPageというJqueryプラグインを使ってるのですが、スマホでは適応させたく無く、当該jsを読み込ませないようにしたい。
https://alvarotrigo.com/fullPage/

windowサイズまたはデバイスに応じて分岐するのかはどちらでも問いません。
試行錯誤しているのですがなんとも処理がうまく行きません。

###該当のソースコード

<script> $(document).ready(function() { $('#container').fullpage({ 以下略 }); }); </script>

###試したこと
①:ウィンドウサイズに応じpcの場合は当該js読み込み それ以下は空とする
→変化なし

jQuery(document).ready(function($) { if (window.matchMedia( '(min-width: 769px)' ).matches) { //画面幅769px以上の場合 $.ajax({ url: 'js/jquery.fullPage.min.js', dataType: 'script', cache: false }); } else { //画面幅768px以下の場合 $.ajax({ url: '', dataType: 'script', cache: false }); }; });

ちなみに例えば、試しに以下テストですがアラートは表示されるので上記/下記の共通部分の書き方自体は間違ってないのかな、と思います。

<script> jQuery(document).ready(function($) { //PC環境の場合 if(window.matchMedia( '(min-width: 769px)' ).matches) { //切り替える画面サイズ window.alert("パソコンの時の処理"); } else{//スマホ環境の場合 window.alert("スマホの時の処理"); } }); </script>

②:fullpage.jsに付与されるclassをremove classで削除

→こちらはクラス自体は付与されなくなるものの、構造的に機能せず適切では無かったです。

③:試しにJqueryのCDNバージョンを変えてみたり、サーバーにアップしてテストしたり。。

当方jsにうとく、ネット上にあるものを片っ端から試しましたが
無理なのでしょうか??
どなたかアドバイス頂けると出来るとありがたいです。
よろしくお願い致します。

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

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

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

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

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

kei344

2017/07/24 02:13

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
rurikabut0_8888

2017/07/24 17:56

不慣れですいません!アドバイスありがとうございました。
kei344

2017/07/24 18:47

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
guest

回答4

0

js/jquery.fullPage.min.js はHTMLにscript要素で呼び出し。

JavaScript

1jQuery( function( $ ) { 2 //PC環境の場合 3 if ( window.matchMedia( '(min-width: 769px)' ).matches ) { //切り替える画面サイズ 4 $( '#container' ).fullpage( { /*略*/ } ); 5 } else { 6 //スマホ環境の場合 7 } 8} );

投稿2017/07/24 07:57

kei344

総合スコア69407

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

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

0

fullpage.jsの読み込みだけでなく、設定しているコードも、PC限定の動作にするのが望ましいですね。
jQueryにはgetScriptという、javascriptを読み込んで実行するメソッドがありますので、それを利用できます。

javascript

1// PCなら 2if (window.matchMedia( '(min-width: 769px)' ).matches) { 3 $.getScript('js/jquery.fullPage.min.js').then(function(){ 4 // fullPageを読み込みんで実行完了したら実行される 5 $('#container').fullpage({ 6 以下略 7 }); 8 }); 9}

投稿2017/07/24 01:29

zohnam

総合スコア1441

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

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

0

ajaxで外部スクリプトを読み込むことも可能ですが、document.writeを使った方が手っ取り早いかと。

javascript

1if (window.matchMedia( '(min-width: 769px)' ).matches) { 2 //画面幅769px以上の場合 3 document.write('<script src="js/jquery.fullPage.min.js"></script>'); 4}

ただし、PCブラウザでページを開いた際のウインドウ幅が狭いとPCブラウザなのにfullpageが適用されない、ウインドウ幅を変えてもfullpageが効いたままになるなどといったケースが予想されます。

幸い、fullPageにはdestroyメソッド(DEMO)が用意されているので、fullPage自体はレイアウトに関係なく読み込んでおき、レイアウトが切り替わったタイミングで動作を切り替える方がいいと思います。

投稿2017/07/24 00:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

rurikabut0_8888

2017/07/24 18:06

ありがとうございます。 他の方がコメント下さった方法はすべて試行済みでしたが、なぜだか反映されませんでした。 理由は分かりませんが、貴方が教えてくださったfulpadeのdestroyメソッドでのみ、希望の動作になりました。大変助かりました。
guest

0

色々試しましたが、以下で解決しました。これ以外はNGでした。
ただ、もしや私の凡ミスな可能性もありますので参考にされず、同様のケースでお困りの方は皆様が有益な回答して下さったのでそれらも合わせてご確認下さいませ。

$(function(){ if (window.matchMedia( '(max-width: 767px)' ).matches) { $.fn.fullpage.destroy(''); } });

投稿2017/07/24 18:14

rurikabut0_8888

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問