• ベストアンサー

スクリプトを読み込ませないスクリプト

読み込ませているjavascriptを条件分岐やtoggleで読み込ませないようにするにはどうすればよいでしょうか? IEなどの条件分岐ではなく、あらかじめ読み込ませているjavascriptをコメントアウトのようにしたりする方法ですが・・・。 有識者の方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

ANo.2です。 >javascriptをoffにしている際の、条件分岐がわからなくて スクリプトをオフにしている場合はスクリプトが動作しませんので、スクリプトの中で条件分岐を考えること自体に無理があります。 スクリプトが動作しない場合(スクリプトが無い場合に起こる状態)が、その条件分岐の結果となるように考えればよろしいのではないでしょうか。 それをベースにして、スクリプトが動作する環境での処理をスクリプトに記述しておけばよいと思います。 例えば以下の例は、スクリプトが動作しない環境も考慮して作られている一例です。 http://d.hatena.ne.jp/Mars/20071109 意味が違っていたら、スルーしてください。

chapital2005
質問者

お礼

fujillin様 回答ありがとうございます。 何度か検証してみましたが、やはり動作が、問題ありでしたので、「header("Location : head2.php")」 に変更することで、meta部分のjavascriptを変更する事にしました。 (意図的にnoscript環境を作りたかったので、) 稚拙な説明で、混乱させてしまい申し訳ありません。

その他の回答 (3)

回答No.3

読み込む前の状態で上書きする、という方法もありますね。 <div id="output"></div> <script> output.innerHTML='<p>こんにちは</p>'; </script> というHTMLとスクリプトがあったとして、 output.innerHTML=''; を実行すると、<p>こんにちは</p>の部分が消えて、スクリプトが実行される前の状態と同じ状態にする事が出来ます。 関数や変数でも、再定義したり上書きすれば消えます。 function hoge(){ alert('hello'); } hoge(); // 'hello'がalertされる hoge=undefined; hoge(); // スクリプトエラー、hogeが定義されていない もちろん「スクリプトを実行する前の状態」がどんなのかわかってないと上書きできませんし、 通常は、読み込んでから読み込まなかった状態を作るのではなく、読み込むかどうかを条件分岐しますが。

chapital2005
質問者

お礼

回答ありがとうございます。 jquery.masonryを用途(ブラウザ・デバイス)にあわせて、条件分岐しているのですが、noscript用にjavascriptをoffにしている際の、条件分岐がわからなくて、対処方法やヒントがあればと思いまして、

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

>あらかじめ読み込ませているjavascriptを~~ >読み込ませているjavascriptを条件分岐やtoggleで読み込ませないようにする~~ 既に読込んでいるスクリプトを、読込ませないようにするのは無理だと思います。 (理由は、『既に読込んでいるから』) 基本的に、スクリプトは読込んだ時に、そのまま内容が実行されます。 実行していることをユーザが認識できるかできないかは別の話ですし、実際の処理はクリックした時に起こるなどのようになっている場合もありますが、その場合でも、「クリックした時に処理される内容を関数として定義する処理」はすでに実行されていることになります。 ご質問の意味が判りかねますが、通常は、  ・一旦読込んでおいて、条件によって実行する/しないを決める  ・対象のスクリプトを読込む前に条件に応じて読込む/読込まないように制御する などの方法で対応しているのではないでしょうか。

chapital2005
質問者

お礼

回答ありがとうございます。 jquery.masonryを用途(ブラウザ・デバイス)にあわせて、条件分岐しているのですが、noscript用にjavascriptをoffにしている際の、条件分岐がわからなくて、対処方法やヒントがあればと思いまして、

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.1

もうすでに動いているスクリプトを止める絶対的な方法はない

chapital2005
質問者

お礼

回答ありがとうございます。

関連するQ&A