No.2ベストアンサー
- 回答日時:
当方、本日手が空いたので色々試行錯誤してみましたが
javascriptを動的に呼び出すのは少し難しいようですな。
[test.js]
function test() { alert('moge'); }
というファイルがあるとして、
[例1]
<input type='button' value='go' onclick='on()' />
<script type='text/javascript'><!--
function on(){
document.write('<script type="text/javascript" src="./test.js"></script>');
}
// --></script>
これだとグローバルスコープでtest.jsの定義が使えるのですが、
画面が再描画されるため意図した動作をせず。
再描画させず、意図させた場所のみ更新させHTMLparseを行わせるという挙動ってできるのですかねぇ。
[例2]
<input type='button' value='go' onclick='on()' />
<script type='text/javascript'><!--
var jsStr = "";
function on(){
getCode();
eval(jsStr);
test();
}
function getXMLHTTPObj(){
try{
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
(snip.)
}
}
function getCode(){
// make instanse
var reqSend = getXMLHTTPObj();
// get instanse
if(reqSend){
reqSend.onreadystatechange = function(){
if(reqSend.readyState == 4 ){
jsStr = reqSend.responseText;
}
}
reqSend.open('POST', "./test.js", false);
reqSend.setRequestHeader('content-type', "application/x-www-form-urlencoded;charset=UTF-8;");
reqSend.send();
}
}
// --></script>
XMLHTTPで呼んでevalしてみる。
使えなくもないですが・・・・
最初から<script>で呼べよという話に。
[例3]
<script src="common1.js"></script>
<script src="common2.js"></script>
<script src="common3.js"></script>
<script src="test.js"></script>(typeはsnip)
<input type="button" onclick='test()' />
スタンダード。
必要な奴は必要なときに逐次呼ぶのが普通。
外部読み込みはprototype.jsとかにありそうな気はしますけどね。
使ったことないですが。
No.3
- 回答日時:
test.jsの中身を関数に入れて普通に呼び出すのを推奨。
test.js
alert('test');
となっていたら以下の様に書き換え
function Click(){
alert('test');
}
<input type="button" value="click" onclick="Click();">
以下は、ご参考まで。
test.jsは関数に入れない状態で作ってください
function Click(){
var s=document.createElement('script');
s.type='text/javascript';
s.src='test.js';
var hd=document.getElementsByTagName('head');
hd=hd.item?hd.item(0)||hd[0]:hd[0];
hd.appendChild(s);
}
<input type="button" value="click" onclick="Click();">
基本はJSONP(DOM?)のそれと同じです。
headに入れてますが、document.bodyに入れても機能します。(エラーチェック等つけてください)
.jsファイルに対してPOSTメソッドを受け付けないサーバー(サービス/会社)があるので、GETの方がいいかもです。
同期接続にするなら、readyStateをチェックしなくても
ActiveXObject、XMLHttpRequestともに、send()した直後からresponseTextやresponseXMLを使用できます。
if(reqSend){
reqSend.open('GET', "./test.js", false);
reqSend.send();
jsStr = reqSend.responseText;
}
No.1
- 回答日時:
<input type="button" value="サンプル" onClick="Sample()">
これで出来ると思います
「Sample()」
この部分を「test.js」で作成した関数に置き換えれば実行できると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ファイルのfunctionの読み込み方
-
javascript内で外部ファイルを...
-
javascriptとApacheの設定
-
メールフォーム、受信メールの...
-
Dreamweaver で 外部JSを読み込...
-
<a href="#" …>の意味を教えて...
-
スマホ上で、左右スワイプで次...
-
ページ内文字列の置換について
-
ユーザーが更新ボタンを押さな...
-
フレームだけ閉じる方法ありま...
-
エレベーターメニューをON/OFF...
-
Vbscriptで自分自身のウィンド...
-
HTMLタグでマウスポインタを変...
-
CSSで先に大枠レイアウトを作成...
-
window.opener.location.href ...
-
ケータイでのダイアログ表示。
-
ポップアップウィンドウの位置
-
いろんなサイズの新しいウィン...
-
音楽再生用jQueryプラグイン「j...
-
エクセルファイルをIE のウィン...
マンスリーランキングこのカテゴリの人気マンスリー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...
おすすめ情報