お世話になっております。
何度か質問させていただいているjavascrip初心者です。
外部jsファイルをボタンクリックなど何かのイベントで動的に読み込む方法がないか模索しています。
http://foofoo77.web.fc2.com/thickbox/test_index. …
↑上記ページは「書き換える」ボタンを押すと
javascriptのappendChildで
<div id="target1">書き換え</div>
の中にscriptタグが追加される動きにしています。
書き換え後に「クリックしてみてください!」をクリックすると
thickboxが動作する動きにしたいと思っています。
ieだとうまく挙動するのですが、firefoxだとthickboxは動作してくれません。
どうすればうまく挙動させれることができるこができますでしょうか?
ご教授よろしくお願いいたします。
※今回はthickboxのjs読み込みで試していますが、実際にやりたいことはもっと読み込みが重いjsの動的な読み込みです。
No.1ベストアンサー
- 回答日時:
jQuery なんぞ使うから……なんてのはともかく、thickbox.js の冒頭にある $(document).ready() の非互換のせいだと思います。
ready() に渡されている無名の関数式を外に出して名前を付け(例えば function hogehoge() {...})、スクリプト末尾で hogehoge() と明示的に実行して下さい。---
ただ、ご質問に根本から反対するようで恐縮ですが、
> 外部jsファイルをボタンクリックなど何かのイベントで動的に読み込む
これは避けた方が良いです。ボタンを押してから読み込みが始まるのでは、利用者をかなり待たせてしまいます。ボタンを押したら即座に結果が得られるサクサク感こそが「Ajax」の醍醐味なのであって、そのためには利用者が操作していない待ち時間の間に「非同期」に読み込みを完了しておくことが大事です。利用者の操作のたびに、いちいち読み込み待ちが入るような UI は考え直すべきです。
ですから、この場合は最初に thickbox.js も読み込んでおくのをお勧めします。もちろん、このままでは初期化処理が走ってしまいますから、冒頭に書いたように ready() の中身を hogehoge() 関数として外に出し、クリック時にこの hogehoge() 関数を呼び出して初期化を行えば良いでしょう。
できれば jquery.js と thickbox.js を 1 個のファイルにまとめ、HTTP コネクション数も減らして下さい。
---
脱線ですが、
> font-size:16pt;
ここで pt 単位を使わないで下さい。
> href="text.html?TB_iframe=true&width=800&height=500"
& を & または & にエスケープしなければ HTML 構文違反です。HTML5 ならば許容されますが、文書型が HTML 4.01 なので一応指摘しておきます。FC2 の広告スクリプトも同様。
ご回答ありがとございます。
教えて頂いた方法で動作は確認できました。
私もjsなどは最初に読み込む方がいいと思います。
今回は技術的にはできることを見せなければいけない事情がありまして
このような方法を取りました。
おっしゃるようにできるだけjsファイルはまとめておきたいと思います。
脱線事項のご指摘もありがとうございます。
参考にさせていただきます。
No.3
- 回答日時:
一応補足。
「thickboxの読み込みタイミングはwindow.onloadより前でなければならない」
という制限がある場合は、AjaxやJSONPでthickboxを実行することは出来ません。
ボタンを押したら・・・ではなく、ページ読み込みの最初からthickboxを使える状態にしておかなければならないと思います。
もしくは、動的読み込みページでも利用できるライブラリを使用して下さい。
No.2
- 回答日時:
そういう場合は、JSONPがいいと思います。
スクリプト読み込み前は「クリックしてみてください!」をクリックできないようにしておき(onclickハンドラをセットしない)
callback関数(下記のサンプルはcallback関数の作成を省略していますが)で、
onclickハンドラをセットすれば、意図した動作になると思います。
<input type="button" value="クリック">
クリックボタンからonclickを消し、
追加されるスクリプトファイルの最後に
$('input:first').click(alertTEST);
を追記してみて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavascriptとJqueryを混在し記述
-
cssにjavascriptを入れる?呼び...
-
javascriptファイルは1つに統...
-
別ファイルのfunctionの読み込み方
-
ASP.NETでjsファイルのリンクの...
-
Dreamweaver で 外部JSを読み込...
-
javascriptとApacheの設定
-
JavaScriptの外部ファイル読み込み
-
外部ファイルでBODYのonloadイ...
-
複数のJavascriptを1つのscrip...
-
一つのHTMLの中で日本語の文字...
-
JavaScriptのエラー ( 関数の...
-
外部ファイルを実行
-
サイトのソースに書いてあるjs...
-
Javascriptのクエリ(パラメー...
-
jQuery 読み込んだ外部htmlフ...
-
javascriptのalertで文字化けが...
-
外部ファイルJS参照を全て消さ...
-
ScriptがTABLEタグの中に表示さ...
-
レンタルサーバーでjavascript...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptとApacheの設定
-
別ファイルのfunctionの読み込み方
-
JavascriptとJqueryを混在し記述
-
javascriptファイルは1つに統...
-
cssにjavascriptを入れる?呼び...
-
Dreamweaver で 外部JSを読み込...
-
複数のJavascriptを1つのscrip...
-
javascriptのalertで文字化けが...
-
レンタルサーバーでjavascript...
-
JavaScriptのエラー ( 関数の...
-
プルダウンメニューを別ファイ...
-
xmlHttpRequest.send( EncodeHT...
-
外部.jsの内容を一部置き換えて...
-
外部読み込みで動かないときの...
-
ひとつの外部ファイルに複数の...
-
【Google Apps Script】「ライ...
-
外部ファイルでBODYのonloadイ...
-
メールフォーム、受信メールの...
-
javascript内で外部ファイルを...
-
リンク先のURLを記述せずに、Ja...
おすすめ情報