天天看點

注入Script增加了一個GoogleTrack功能

注入Script增加了一個GoogleTrack功能

。很多時候你可能會想在Google裡面搜尋一下你的文章是否被别人轉載了,如果每次都要把标題複制到Google裡再搜,真是麻煩得要死。GoogleTrack就是會自動地把搜尋連接配接生成,然後你隻需要點選連結就可以跟蹤你自己的文章的功能。

本來這個腳本注入做的是比較的麻煩,因為部落格園的文章在顯示的時候會自動過濾掉裡面<script> ...

</script>,但是如果是<tag onclick="javascript:

..."></tag>這樣的腳本卻是可以被保留的。正好這個是必須保留的,否則動态折疊代碼的功能就是使用不了了

注入Script增加了一個GoogleTrack功能

。以至我開始制作這個注入就是按不能使用<script>來做的,才搞得比較麻煩。

    如上所說,我使用HTML

Object事件屬性來内連代碼。為了讓代碼自動執行,必須使用onload一類的屬性,有onload屬性的element還不少,看看覺得使用IMG是比較好的,于是使用<img

onload="...">來作為代碼注入的執行點起點。可是這個時候問題又來了,如果我引用的image裝載的很快,那麼它的onload很有可能比document的onload早執行,那個時候頁面都沒有裝載完畢,注入很容易出錯的說。

    是以在IMG的onload裡是不能做真正的執行注入的邏輯的,而把注入的執行挂到document的onload事件上,因為<script>對象一但被append進文檔就會load其src所指向的腳本檔案。注入代碼如下:

注入Script增加了一個GoogleTrack功能

<img src="http://zhilee.aehk.com/Archive/Images/25.gif"

注入Script增加了一個GoogleTrack功能

     style="width:0; height:0" onload="

注入Script增加了一個GoogleTrack功能

function JudgeInject()

注入Script增加了一個GoogleTrack功能

{

注入Script增加了一個GoogleTrack功能

     var injected = false;

注入Script增加了一個GoogleTrack功能

     var scripts = document.getElementsByTagName('SCRIPT');

注入Script增加了一個GoogleTrack功能

     for ( var i=0 ; i < scripts.length ; ++i )

注入Script增加了一個GoogleTrack功能

     {

注入Script增加了一個GoogleTrack功能

         var script = scripts[i];

注入Script增加了一個GoogleTrack功能

         var fileName = script.src;

注入Script增加了一個GoogleTrack功能

         fileName = fileName.substr(fileName.lastIndexOf('/'));

注入Script增加了一個GoogleTrack功能

         if ( fileName == '/GoogleTrack.js' )

注入Script增加了一個GoogleTrack功能

         {

注入Script增加了一個GoogleTrack功能

             injected = true;

注入Script增加了一個GoogleTrack功能

             break;

注入Script增加了一個GoogleTrack功能

         }

注入Script增加了一個GoogleTrack功能

     }

注入Script增加了一個GoogleTrack功能

     if ( !injected )

注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能

         var __script__ = document.createElement('SCRIPT');

注入Script增加了一個GoogleTrack功能

         document.body.appendChild(__script__);

注入Script增加了一個GoogleTrack功能

         __script__.src = "http://zhilee.aehk.com/Archive/JScript/GoogleTrace.js";

注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能

}

注入Script增加了一個GoogleTrack功能

document.body.onload = JudgeInject;

注入Script增加了一個GoogleTrack功能

">

    其實本來可以把檔案都放在cnblogs的伺服器上,那樣效果會更好,因為伺服器的傳輸速率就是一樣的,會少些異步操作代來的問題,我有空再來移圖檔和代碼了。

    腳本GoogleTrack.js是用來處理具體的注入邏輯的,它依賴于部落格園文章的顯示格式,然後都是一些DHTML的操作而以,沒啥難的,代碼如下(也可以直接用上面代碼中的url下載下傳):

注入Script增加了一個GoogleTrack功能

InjectComponents();

注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能

function InjectComponents()

注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能

     var imgPath = 'http://zhilee.aehk.com/Archive/Images/';

注入Script增加了一個GoogleTrack功能

     var posts = document.getElementsByTagName('H5');

注入Script增加了一個GoogleTrack功能

     var imgSrc = imgPath + 'GoogleTrack-s.gif';

注入Script增加了一個GoogleTrack功能

     if ( !posts || posts.length == 0 )

注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能

     for ( var i=0 ; i < posts.length ; ++i )

注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能
注入Script增加了一個GoogleTrack功能

    怎麼用?! 對了,怎麼用呢?把第一段代碼加到Configure的"公告"裡就行了:) 我都做完後我才發現,公告裡面是支援<script> ... </script>,早知道我就不這麼折騰了,代碼都放公告裡就的了

注入Script增加了一個GoogleTrack功能

   頁面注入GoogleTrack後的效果: 

    enjoy it!

本文轉自部落格園鳥食軒的部落格,原文連結:http://www.cnblogs.com/birdshome/,如需轉載請自行聯系原部落客。

繼續閱讀