改行 タブ 行頭・行末のスペースを全て削除して、圧縮する
OK、ちゃんと動きます。
Category: JavaScript
document.referrer
document.referrerでどう入るか?
hpscript.comにipのディレクトリを作って、aタグを設置する。
js
a.push(['acquisition',document.referrer]);
document.referrerだと、プロトコルから入る。
リファラーを定義
<script> Object.defineProperty(document,"referrer", {value:"https://www.google.com/"}); console.log(document.referrer); </script> <a href="http://192.168.33.10:8000/wwwroot/view.php">リンク</a>
例えば、google, yahooで「機械学習」と検索すると、検索結果のURLは以下のようになる。
https://www.google.co.jp/search?q=%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92&oq=%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92&aqs=chrome..69i57j69i61l3j0l2.3764j0j7&sourceid=chrome&ie=UTF-8 https://search.yahoo.co.jp/search;_ylt=A2RA0Dp_2OVaYhIAmnaJBtF7?p=%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=-1&oq=%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92&at=&aa=&ai=s2uf6ZtEQS6rZIfyd2LYHA&ts=4050
マルチドメインの場合は
-https://wwww.hoge
-https://hoge
-http://www.hoge
-http://hoge
その他検討事項
-メールの場合
-直リンク
-サブドメインがある場合
閲覧しているブラウザのwidth, heightを取得する
document.write("width:"+screen.width+"<br>"); document.write("height:"+screen.height+"<br>");
書き方を変えます。
var screen = screen.width +"x" + screen.height; document.write(screen);
iphone xの場合
jsに入れる
繋げる
いいんじゃない
まずtopページは大体こんな感じ。
次はトラッキングコードの画面
ユーザーのosを取得する
<script src="platformjs/platform.js"></script> <script type="text/javascript"> document.write(platform.name + "<br>"); document.write(platform.version + "<br>"); document.write(platform.os + "<br>"); </script>
うーん、gaだと、windowsまでだが、osのバージョンまで出てしまう。。。
consoleでみると、jsonのfamilyで入っているので、
<script src="platformjs/platform.js"></script> <script type="text/javascript"> // document.write(platform.name + "<br>"); // document.write(platform.version + "<br>"); document.write(platform.os['family'] + "<br>"); </script>
芸が細かいな。。
$.getScript("../platformjs/platform.js", function(){ a.push(['browser',platform.name]); a.push(['os',platform.os['family']]); });
ほい!
最後は謎の”service provider”
geoip_isp_by_nameは動かない。。
プロバイダ:インターネットへの接続サービスを提供する事業者。
->ゲートウェイ?
どうやらgethostbyaddr($ip);っぽいですな。
jqueryでjsの中でplatform.jsを読み込む
na.jsはjqueryを読み込んでいるので、GETリクエストでplatform.jsを読み込みコールバック関数で実行
$.getScript("../platformjs/platform.js", function(){ a.push(['browser',platform.name]); });
chromeを取得できてますね。
ieだと、ブラウザ情報がIEになってます。
mongoDBにも、”browser” : “IE”で入ってます! OKOK!
{ "_id" : ObjectId("5ae48224e13823435337fd94"), "date" : "2018-04-28 23:16:04", "ip" : "192.168.33.1", "cookie" : "y28mw6ppl3", "visit" : "New User", "referrer" : "", "session" : "y28mw6ppl3", "page" : "/wwwroot/view.php", "browser" : "IE", "continent" : "Asia", "contry" : "Japan", "city" : "Komagatani" }
そのままの勢いでviewも作ります。
良し!Nice!
次はOS
platform.jsでbrowser情報を取得する
platform.js
https://github.com/bestiejs/platform.js
作った方
John-David Dalton
JavaScript tinkerer, bug fixer, & benchmark runner • Creator of Lodash • Former Chakra Perf PM • Current Web Platform DX PM @Microsoft
出たー、@Microsoft!
またかよ、このパターン。。。
それはさておき、git cloneします。
[vagrant@localhost cookie]$ git clone https://github.com/bestiejs/platform.js.git Cloning into 'platform.js'... remote: Counting objects: 2138, done. remote: Compressing objects: 100% (2/2), done. remote: Total 2138 (delta 2), reused 1 (delta 1), pack-reused 2135 Receiving objects: 100% (2138/2138), 3.69 MiB | 880.00 KiB/s, done. Resolving deltas: 100% (1276/1276), done. Checking connectivity... done.
入りました。
早速使ってみます。
<script src="platformjs/platform.js"></script> <script type="text/javascript"> document.write(platform.name + "<br>"); document.write(platform.version + "<br>"); </script>
これこれ、求めてたの!
IEで見てみると、
素晴らしい!
ついでに、platform.jsの中身もざっと見てみます。このへんで、labelingしてます。
/* Detectable browser names (order is important). */ var name = getName([ 'Adobe AIR', 'Arora', 'Avant Browser', 'Breach', 'Camino', 'Electron', 'Epiphany', 'Fennec', 'Flock', 'Galeon', 'GreenBrowser', 'iCab', 'Iceweasel', 'K-Meleon', 'Konqueror', 'Lunascape', 'Maxthon', { 'label': 'Microsoft Edge', 'pattern': 'Edge' }, 'Midori', 'Nook Browser', 'PaleMoon', 'PhantomJS', 'Raven', 'Rekonq', 'RockMelt', { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' }, 'SeaMonkey', { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' }, 'Sleipnir', 'SlimBrowser', { 'label': 'SRWare Iron', 'pattern': 'Iron' }, 'Sunrise', 'Swiftfox', 'Waterfox', 'WebPositive', 'Opera Mini', { 'label': 'Opera Mini', 'pattern': 'OPiOS' }, 'Opera', { 'label': 'Opera', 'pattern': 'OPR' }, 'Chrome', { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' }, { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' }, { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' }, { 'label': 'IE', 'pattern': 'IEMobile' }, { 'label': 'IE', 'pattern': 'MSIE' }, 'Safari' ]);
line79-81に以下のように書かれています。
// Platform tokens are defined at:
// http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
// http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
これまた凄いな、ホントに。
http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
jsでbrowser情報を取得する
<script type="text/javascript"> document.write(navigator.appCodeName + "<br>"); document.write(navigator.appName + "<br>"); document.write(navigator.appVersion + "<br>"); document.write(navigator.platform + "<br>"); document.write(navigator.userAgent + "<br>"); </script>
chromeで見てるから、chromeと出力させたいんだが、何故mozilla、Netscapeなんだ????
仕組みが分からん。
javascriptでunixtimeを取得
ga.jsだと、new Date()は9か所で書かれてます。大体、new Date()と.getTime()が続けて書かれています。
+(new Date((new Date).getTime()+f)).toGMTString()+"; ") a=Math.min(a,1E3*Be+a-(new Date).getTime()); this.set(ab,Math.round((new Date).getTime()/1E3)); this.set(y,Math.round((new Date).getTime()/1E3)); if("event"===a.get(sc)){var b=(new Date).getTime(),c=a.b(dc,0),d=a.b(Zb,0);
1E3 とは、10^3 つまり1000のようです。
ga.jsの真似をして1E3で書いてみます。
var date = Math.floor((new Date()).getTime()/1E3); document.write(date);
おお、少しプログラミングが上達した錯覚を起こしますね。んな訳ない、桑原桑原。
javascriptでランダムな英数字10桁と数字10桁
console.time('timer1'); var char = "abcdefghijklmnopqrstuvwxyz123456789" var id = ""; for(var i=0; i<10; i++){ id += char[Math.floor(Math.random()*35)]; } document.write(id); console.timeEnd('timer1');
0.24609375ms
timer1: 0.411865234375ms ※2回目
timer1: 0.324951171875ms ※3回目
min:1000000000 ~ max 9999999999 の10桁の数字の場合
var id = Math.floor(Math.random() * 9000000000)+ 1000000000; document.write(id);
timer1: 0.329833984375ms
timer1: 0.248779296875ms ※2回目
timer1: 0.24462890625ms ※3回目
感覚的に、1回の演算処理に較べて10回のforループを回す場合、レジストリの演算処理が10倍に増えるので、処理時間も約10倍位になるかと思いきや、計算してみるとforループでも処理時間はほとんど変わらない(2倍以下)ですね。multiplyとplusのCPUの処理はそんなに時間がかからない、ということなんでしょうか。よくわかりませんね。
gaがデータを送信しているように見えるdoubleclick.netとは?
doubleclick.net
アクセスすると、doubleclickbygoogle にリダイレクトされます。。よくわからないですね。トラッキングのデータがすべて入ってくるので、広告関係をやっているのでしょうか?サイトを見ると、adコンテンツばかりです。
googleの検索アルゴリズムと、double clickが無関係(な訳ないか)なのか、どう連携しているのかも気になるところですが、運営がgoogleになっている。。
https://www.doubleclickbygoogle.com/
再び、ga.jsですが、どうやってデータを送っているのか、よくわかりません。この変だと思うのですが。。。
return"https:"==J.location.protocol||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com"}, Ce=function(a){ this.name="len";this.message=a+"-8192"}, De=function(a){ this.name="ff2post"; this.message=a+"-2036"},Sa=function(a,b,c,d){b=b||Fa;if(d||2036>=a.length)gf(a,b,c); else if(8192>=a.length){ if(0<=W.navigator.userAgent.indexOf("Firefox")&&![].reduce)throw new De(a.length);