注入Script增加了一个GoogleTrack功能

首先声明我不是对博客园搞破坏哦,而且我只修改我的blog注入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后的效果: 

   注入Script增加了一个GoogleTrack功能
    enjoy it!


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。