以下の記述
<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で質問しましょう!
似たような質問が見つかりました
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascript外部読み込みの際の引数
-
jqueryでのkeydownイベント発生...
-
外部JSファイルで値を受け取る方法
-
jQueryの基本的なことについて...
-
画像をゆっくりと切り替える方法
-
map とlightbox
-
音楽再生用jQueryプラグイン「j...
-
日本語記述が出来ません(XML?)
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
JavaScriptからVBScriptの呼び...
-
<script>...</script> 要素の内
-
GIFアニメの動きが止まってしま...
-
相対パスと絶対パスの速度
-
SCRIPT5007: 未定義または NULL...
-
bodyにidをつける理由は何ですか?
-
cssにjavascriptを入れる?呼び...
-
ホームページ上に『位置固定』...
-
pythonのWebスクレイピングでfi...
-
html メールリンクにて自動ファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
base64encodeでの文字化けについて
-
複数のjavascriptを使うと動か...
-
jqueryでのkeydownイベント発生...
-
Jqueryの干渉について
-
Base64に変換したHTMLの<script...
-
プラグイン無しでContactform7...
-
jQuery-datepicker on IE8
-
サイトにアクセスした際、数秒...
-
jQuery が動作しません。
-
javaスクリプトについて質問で...
-
jQueryでloadした要素の操作が...
-
jqueryについて(Lightboxとbxs...
-
scrollsmoothly.jsが動かない
-
JavaScriptで背景や文字色を色→...
-
jQuery UIのdraggableについて
-
colorboxの直接呼び出し方法に...
-
「jquery.csv2table.js」から生...
-
●jQuery;スクロールでついてく...
-
jQueryのdraggable縦書き出来ま...
-
Camera slideshowの使い方について
おすすめ情報