人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ランダムでジャバスクリプトを表示させたいのですが、どのようなコードを書けばいいでしょうか? Add Star

具体的な話になると、ブログで広告をだしているのですが、A社を○%、B社を○%といったように振り分けたいのですが、どのようにかけばいいのかがわからなくて困っています

コードはこんな感じなのですが
A社
<script type="text/javascript">
var nend_params = {"media":xxxxx,"site":xxxxxx,"spot":xxxxxx,"type":1,"oriented":1};
</script>
<script type="text/javascript" src="https://js1.nend.net/js/nendAdLoader.js"></script>

B社
<script type="text/javascript">
imobile_tag_ver = "0.x";
imobile_pid = "xxxxx";
imobile_asid = "xxxxxx";
imobile_type = "inline";
</script>
<script type="text/javascript" src="http://spad.i-mobile.co.jp/script/adssp.js?20110215"></script>

どんな感じでかけばいいでしょうか?

●質問者: snoopy_japan
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●500ポイント ベストアンサー

A社 : B社 = 7 : 3 だと、こんな感じになるでしょうか。

<script>
(function() {
 var v = Math.random(); // 0.0 ? 1.0
 if (v < 0.7) { // A社 70%
 document.write([
 '<s' + 'cript type="text/javascript">',
 'var nend_params = {"media":xxxxx,"site":xxxxxx,"spot":xxxxxx,"type":1,"oriented":1};',
 '</s' + 'cript>',
 '<s' + 'cript type="text/javascript" src="https://js1.nend.net/js/nendAdLoader.js"></s' + 'cript>',
 ].join("\n"));
 } else { // B社 30%
 document.write([
 '<s' + 'cript type="text/javascript">',
 'imobile_tag_ver = "0.x";',
 'imobile_pid = "xxxxx";',
 'imobile_asid = "xxxxxx";',
 'imobile_type = "inline";',
 '</s' + 'cript>',
 '<s' + 'cript type="text/javascript" src="http://spad.i-mobile.co.jp/script/adssp.js?20110215"></s' + 'cript>',
 ].join("\n"));
 }
})();
</script>

広告用のコードを展開するところは、以下の形になってます。

 document.write([
 ここに広告用のコード
 ].join("\n"));

「ここに広告用のコード」は、それぞれ貼り付けるコードにシングルクォートがないとして、一行ずつシングルクォートでくくって行末にカンマをつけています。

 ' ここにコードを一行 ',

広告用のコード中の script タグは文字列中にあっても html の一部として解釈されてしまうので、途中で分断します。

 '<script ...' → '<s' + 'cript ...'
 '</script>' → '</s' + 'cript>'

snoopy_japanさんのコメント
a-kuma3 さんいつもありがとうございます。 すみません、 document.write([ ここに広告用のコード ].join("\n")); のここに広告用のコードという所なんですが、 どのような記述をすればいいのかわからないです 理解力がなくすみませんが教えてくれたければ嬉しいです

a-kuma3さんのコメント
質問にあったコードは、回答欄の最初に20行ちょいのコードに埋め込んであります。 一応、その後で説明してるつもりなんですが、具体的なコードで示します。 質問にあった A社の広告用のコード。 >|| <script type="text/javascript"> var nend_params = {"media":xxxxx,"site":xxxxxx,"spot":xxxxxx,"type":1,"oriented":1}; </script> <script type="text/javascript" src="https://js1.nend.net/js/nendAdLoader.js"></script> ||< 一行ずつ、シングルクォートで括って、行末にカンマをつけます。 >|| '<script type="text/javascript">', 'var nend_params = {"media":xxxxx,"site":xxxxxx,"spot":xxxxxx,"type":1,"oriented":1};', '</script>', '<script type="text/javascript" src="https://js1.nend.net/js/nendAdLoader.js"></script>', ||< &lt;script ... &gt; と &lt;/script&gt; を分断します。 >|| '<s' + 'cript type="text/javas' + 'cript">', 'var nend_params = {"media":xxxxx,"site":xxxxxx,"spot":xxxxxx,"type":1,"oriented":1};', '</s' + 'cript>', '<s' + 'cript type="text/javas' + 'cript" src="https://js1.nend.net/js/nendAdLoader.js"></s' + 'cript>', ||< これが、document.write ? .join の間に入ります。 >|| document.write([ ★ここに入る ].join("\n")); ||< 入れたのがこう。 >|| document.write([ '<s' + 'cript type="text/javas' + 'cript">', 'var nend_params = {"media":xxxxx,"site":xxxxxx,"spot":xxxxxx,"type":1,"oriented":1};', '</s' + 'cript>', '<s' + 'cript type="text/javas' + 'cript" src="https://js1.nend.net/js/nendAdLoader.js"></s' + 'cript>', ].join("\n")); ||<

snoopy_japanさんのコメント
ありがとうございます、表示のほうできました。

snoopy_japanさんのコメント
いつもありがとうございます、またこれからも質問するかもしれませんが その時はまたよろしくお願いします。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ