• ベストアンサー

外部JavaScriptの書き方

外部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();

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

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);

TPR_SET
質問者

お礼

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

その他の回答 (3)

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

個人的には、今ケースなら document.createElement('script') のコードが良いと思います。 ---- 余談。 クロスドメイン制限は「XMLHttpRequest Level 2」で回避することが出来ます。 http://vird2002.s8.xrea.com/javascript/XMLHttpRequest.html#XMLHttpRequest_Level_2 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/XMLHttpRequest.html#ActiveXObject http://blogs.msdn.com/b/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx

TPR_SET
質問者

お礼

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

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

補足 No.2の XMLHttpRequest を使ったやり方は、 同じドメインのサイトのscriptしか実行出来ません。 他サーバーの外部javascriptは出来ません (クロシドメインアクセス制限といいます。) No.1は終了タグ</script>だけ注意すればよかったみたいです。 http://www39.atwiki.jp/eriax/pub/html/note-html1.html#section-1-2-3-3 もっとも、スクリプトソースのコードの中に"<",">"を書く時は、替わりに "\u003C","\u003E" を書くのがよいとか

TPR_SET
質問者

お礼

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

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

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>

TPR_SET
質問者

お礼

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

関連するQ&A

専門家に質問してみよう