张文保的博客
张文保 · Paul Zhang

Engineering the Future
功不唐捐,玉汝于成

织梦DedeCMS

利用百度uaredirect.js为织梦DedeCMS设置判断手机端自动跳转

今天,保哥的一个织梦CMS核心的网站打开很慢,仔细分析发现是远程调用百度的uaredirect.js文件打不开导致的,以前使用了百度siteapp来判断手机端自动跳转到手机端二级域名用的。这种现象和Google被墙后,国内的网站上的google公用库js文件打不开引起网站卡慢一样。具体失效代码如下:

<script src="http://siteapp.baidu.com/static/webappservice/uaredirect.js" type="text/javascript"></script>

 

解决办法是将uaredirect.js本地化,以下是具体代码:

function uaredirect(f) {
try {
if (document.getElementById("bdmark") != null) {
return
}
var b = false;
if (arguments[1]) {
var e = window.location.host;
var a = window.location.href;
if (isSubdomain(arguments[1], e) == 1) {
f = f + "/#m/" + a;
b = true
} else {
if (isSubdomain(arguments[1], e) == 2) {
f = f + "/#m/" + a;
b = true
} else {
f = a;
b = false
}
}
} else {
b = true
}
if (b) {
var c = window.location.hash;
if (!c.match("fromapp")) {
if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i))) {
location.replace(f)
}
}
}
} catch(d) {}
}
function isSubdomain(c, d) {
this.getdomain = function(f) {
var e = f.indexOf("://");
if (e > 0) {
var h = f.substr(e + 3)
} else {
var h = f
}
var g = /^www./;
if (g.test(h)) {
h = h.substr(4)
}
return h
};
if (c == d) {
return 1
} else {
var c = this.getdomain(c);
var b = this.getdomain(d);
if (c == b) {
return 1
} else {
c = c.replace(".", "\.");
var a = new RegExp("\." + c + "$");
if (b.match(a)) {
return 2
} else {
return 0
}
}
}
};

 

或者用压缩版的:

function uaredirect(f){try{if(document.getElementById(”bdmark”)!=null){return}var b=false;if(arguments[1]){var e=window.location.host;var a=window.location.href;if(isSubdomain(arguments[1],e)==1){f=f+”/#m/”+a;b=true}else{if(isSubdomain(arguments[1],e)==2){f=f+”/#m/”+a;b=true}else{f=a;b=false}}}else{b=true}if(b){var c=window.location.hash;if(!c.match(”fromapp”)){if((navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i))){location.replace(f)}}}}catch(d){}}function isSubdomain(c,d){this.getdomain=function(f){var e=f.indexOf(”://”);if(e>0){var h=f.substr(e+3)}else{var h=f}var g=/^www./;if(g.test(h)){h=h.substr(4)}return h};if(c==d){return 1}else{var c=this.getdomain(c);var b=this.getdomain(d);if(c==b){return 1}else{c=c.replace(”.”,”\.”);var a=new RegExp(”\.”+c+”$”);if(b.match(a)){return 2}else{return 0}}}};

 

复制以上代码保存为uaredirect.js,在织梦DedeCMS网站根目录新建/js/目录,将uaredirect.js放入/js/目录。手机版用的是二级域名的话,下面的代码中,请自行修改你自己的手机版二级域名。

在首页模板<head>与</head>中填加以下代码:

<script src="../js/uaredirect.js" type="text/javascript"></script>
<script type="text/javascript">uaredirect(window.location.href.replace("www.","m."));</script>

 

在列表页模板<head>与</head>中填加以下代码:

<script src="../js/uaredirect.js" type="text/javascript"></script>
<script type="text/javascript">uaredirect("http://m.zhangwenbao.com/view.php?aid={dede:field.id/}");</script>

 

在内容页模板<head>与</head>中填加以下代码:

<script src="../js/uaredirect.js" type="text/javascript"></script>
<script type="text/javascript">uaredirect("http://m.zhangwenbao.com/list.php?tid={dede:field.id/}");</script>

 

相关文章
本文标题:《利用百度uaredirect.js为织梦DedeCMS设置判断手机端自动跳转》
网址:https://zhangwenbao.com/baidu-uaredirect-js-dedecms-jumps-to-mobile.html
作者:张文保
发布时间:2017-02-06
许可协议:CC BY-NC-SA 4.0
发表新评论
SSL安全认证