
以下の記述
<script src="…">★</script>
で★の部分に「値」を書くことによって外部JSファイルに値を渡せるようです。がどう受け取るのかが判りません。
★に記述するのはあくまでも値です。「var a = "…";」等の式ではありません。具体的にはGoogle+の「+1 ボタン」の設置の際のコードで
<script src="https://apis.google.com/js/platform.js" async defer>
{lang: 'ja'}
</script>
のように記述します。こうすると「Google でおすすめする」となり、「{lang: 'en'}」とすると「Recommend this on Google」となります。(反映されたのはIE11。Chromeでは効かない)
なので少なくともIEではオブジェクトの受け渡しができているようです。
script要素でsrcを書くときにも閉じタグが必須である理由が今までわからなかったのですが、このためなのかなと今更ながらにカルチャーショックを受けました。
一応ググってみたのですが、グローバル領域に変数を定義してしまう方法や、クエリパラメータで指定する方法ばかりがヒットしてしまい、上記の方法に関する情報は見つけられませんでした。
https://apis.google.com/js/platform.js
を丁寧に読めば判るはずですが、コードが圧縮されていて非常に読みにくくなっており断念してしまいました。
<script src="…">★</script>
で★の部分に「値」を書いてそれを外部JSファイルで受け取る方法を教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
方法はNo1様が回答した通りと推測します。
ごく簡単な例を・・・
<test.js>
(function(){
var s = document.getElementsByTagName("script");
var obj = JSON.parse(s[s.length-1].innerHTML);
var i, txt = "";
for(i in obj)
txt += i + " = " + obj[i] + "<br>";
document.getElementById("result").innerHTML = txt;
})();
<html>
<!DOCTYPE HTML>
<html lang="ja">
<head><title>TEST</title></head>
<body>
<div id="result">result</div>
<script type="text/javascript" src="test.js">
{
"hoge": "hogehoge",
"fuga": 111,
"piyo": 222
}
</script>
</body>
</html>
ソースをきちんとは解析できていないのですが以下のあたりの
k.___gu=b}var b=Ub("cu"),e=q.scripts||q[pa]("script")||[],d=[],f=[];f[F][E](f,Ub("us"));for(var g=0;g<e[I];++g)for(var h=e[g],l=0;l<f[I];++l)h.src&&
0==h.src[H](f[l])&&d[F](h);0==d[I]&&0<e[I]&&e[e[I]-1].src&&d[F](e[e[I]-1]);for(e=0;e<d[I];++e)d[e][M]("gapi_processed")||(d[e][v]("gapi_processed",!0),(f=d[e])?(g=f.nodeType,f=3==g||4==g?f.nodeValue:f.textContent||f.innerText||f.innerHTML||""):f=void 0,(f=Yb(f))&&b[F](f));a&&(d={},Xb(d,a),c[F](d));
scripts, q[pa]("script"), src, innerText, innerHTML
等のキーワードから確かにそうっぽいですね。特に
q=document
pa="getElementsByTagName"
という定義があるので。
わざわざサンプルを作成していただき、ありがとうございました。Chromeでも動くことが確認できました。(でも、だとするとgoogle+ボタンの設置で、なぜChromeでは効かないのか謎ですが)
引数を渡す仕組みがあるのかと思っていたのですが、そうではなく独自にがんばっていただけということでちょっと拍子抜けしてしまいました。
しかし参考になりました。ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IEだけjsファイルを読み込まな...
-
mootoolsとjQueryの共存がうま...
-
<a href="#" …>の意味を教えて...
-
SQLのWHEREで全てを質問する方法
-
子ウィンドウ内にあるフレーム...
-
特定のページから移動してきた...
-
HTMLソースからURLだけを抜き出...
-
ユーザーが更新ボタンを押さな...
-
初心者です。あまりに初歩的な...
-
undefinedが表示されてしまう
-
別ページのインラインフレーム...
-
Backbone.js イベントが効かない
-
ウインドウの後ろに隠れている...
-
フォーカス移動抑止について
-
ワンクリック、ダブルウインド...
-
インラインフレーム内のスクロ...
-
<aタグで変数に文字を代入
-
小窓を開くJSで、高さを調節し...
-
Dreamweaver で 外部JSを読み込...
-
location.reload() について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サイトにアクセスした際、数秒...
-
マスターページでのJavaScriopt...
-
jqueryのcolorboxを読込直後に...
-
Base64に変換したHTMLの<script...
-
colorboxの直接呼び出し方法に...
-
CKeditorについて
-
nyroModal HEADタグ内の記述に...
-
アコーディオンとロールアップ...
-
jqueryを2つ設置した事で片方...
-
base64encodeでの文字化けについて
-
mootoolsとjQueryの共存がうま...
-
スライド写真で2、3枚目をラ...
-
jqueryにて
-
javaスクリプトについて質問で...
-
jQuery が動作しません。
-
Google 自サイト検索結果 オー...
-
Javascriptのエラーに悩まされ...
-
jqueryとlightboxが一緒に動作...
-
jquery select要素のdisplay:no...
-
Photo Sliderの画像にリンクを...
おすすめ情報