重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

外部JavaScriptの書き方


<script language="JavaScript" src="data.js"></script>
上記data.jsから、他サーバーの外部javascriptを読み出すには
以下のよな書き方で正しいでしょうか?

document.open();
document.write('<script language="JavaScript" src="http://hoge.com/data.js"></script>');
document.close();

A 回答 (4件)

document.write()で<script>タグを書く時は、わざと


document.write( '<sc' + 'ript type="text/javascript" src="xx"></sc' + 'ript>');
のように'<sc'と'ript>'を分けた方がよい。

もっといいのは↓だけど...
var url = 'http~';
var script=document.createElement("script");
script.setAttribute("id","hoge");
script.setAttribute("type","text/javascript");
script.setAttribute("charset","UTF-8");
script.setAttribute("src",url);
document.getElementsByTagName("head")[0].appendChild(script);
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
とても参考になりました。

お礼日時:2010/10/18 13:04

個人的には、今ケースなら document.createElement('script') のコードが良いと思います。



----
余談。

クロスドメイン制限は「XMLHttpRequest Level 2」で回避することが出来ます。
http://vird2002.s8.xrea.com/javascript/XMLHttpRe …

var xhr = typeof XDomainRequest !== 'undefined' ? new XDomainRequest : (typeof XMLHttpRequest !== 'undefined' ? new XMLHttpRequest : new ActiveXObject('Msxml2.XMLHTTP.6.0'));

ActiveX() で指定される Msxml2.XMLHTTP ではバージョンを指定しないと 3.0 が指定されます。
Msxml2.XMLHTTP は 3.0, 4.0, 5.0, 6.0 とバージョンがありますが、MS中の人は「3.0 と 6.0 しかメンテしないので、その2つだけ利用してね」と書いていたと思います。
http://vird2002.s8.xrea.com/javascript/XMLHttpRe …
http://blogs.msdn.com/b/xmlteam/archive/2006/10/ …
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
いろいろと複雑な方法があるんですね。
JavaScriptは基本的な書き方もわかっていなかったので、大変勉強になりました。

お礼日時:2010/10/18 13:09

補足


No.2の XMLHttpRequest を使ったやり方は、
同じドメインのサイトのscriptしか実行出来ません。
他サーバーの外部javascriptは出来ません
(クロシドメインアクセス制限といいます。)

No.1は終了タグ</script>だけ注意すればよかったみたいです。

http://www39.atwiki.jp/eriax/pub/html/note-html1 …

もっとも、スクリプトソースのコードの中に"<",">"を書く時は、替わりに
"\u003C","\u003E" を書くのがよいとか
    • good
    • 0
この回答へのお礼

参考になる情報をいろいろと有難うございます。
No.1で教えていただいた方法を使わせてもらおうと思います。

お礼日時:2010/10/18 13:06

XMLHttpRequestの同期通信を使って...



<script type="text/javascript">
<!--

var XHR = (window.XMLHttpRequest)?new XMLHttpRequest:new ActiveXObject("Msxml2.XMLHTTP");

XHR.open("GET","http://hoge.com/data.js",false); //同期通信
XHR.setRequestHeader("Content-Type","text/javascript");
XHR.send(null);

if (XHR.status == 200)
eval(XHR.responseText); //Script実行
else alert("エラーが発生しました。"+XHR.status+":"+XHR.statusText);

XHR = null;

// -->
</script>
    • good
    • 0
この回答へのお礼

有難うございます。
いろいろな方法があるんですね。

お礼日時:2010/10/18 13:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!