DedeCMS digg Ajax 跨域的实现分析_dedecms_CMS教程_迪尔课堂

提供解决方案如下: tPY迪尔课堂自学网-|第二课堂|--(官网)
@writen by etongchina 2009-02-06 19:00 tPY迪尔课堂自学网-|第二课堂|--(官网)
实现方案:类似json实现 tPY迪尔课堂自学网-|第二课堂|--(官网)
实现原理:js允许引入的远程文件(js)来操作本地数据 tPY迪尔课堂自学网-|第二课堂|--(官网)
具体方法:(以http://news.xxx.com/200812/25-4653.html 为例) tPY迪尔课堂自学网-|第二课堂|--(官网)
1.修改http://news.xxx.com/200812/25-4653.html 的js调用用部分; tPY迪尔课堂自学网-|第二课堂|--(官网)
在本地html或js文件中写入: tPY迪尔课堂自学网-|第二课堂|--(官网)
<SCRIPT LANGUAGE="JavaScript"> tPY迪尔课堂自学网-|第二课堂|--(官网)
function _Digg(type,tid){ tPY迪尔课堂自学网-|第二课堂|--(官网)
var s = document.createElement("SCRIPT"); tPY迪尔课堂自学网-|第二课堂|--(官网)
s.id="cgi_emotion_list"; tPY迪尔课堂自学网-|第二课堂|--(官网)
document.getElementsByTagName("HEAD")[0].appendChild(s); tPY迪尔课堂自学网-|第二课堂|--(官网)
s.src="http://www.xxx.com/../dig.php?type="+type+"&tid="+tid ; tPY迪尔课堂自学网-|第二课堂|--(官网)
//需要统计的php页面的 src tPY迪尔课堂自学网-|第二课堂|--(官网)
} tPY迪尔课堂自学网-|第二课堂|--(官网)
function visitCountCallBack(data){ tPY迪尔课堂自学网-|第二课堂|--(官网)
document.getElementsByTagName("HEAD")[0].removeChild(document.getElementById("cgi_emotion_list")); tPY迪尔课堂自学网-|第二课堂|--(官网)
for(var i in data){ tPY迪尔课堂自学网-|第二课堂|--(官网)
var e =document.getElementById(i); tPY迪尔课堂自学网-|第二课堂|--(官网)
if(e) e.innerHTML=data[i]; tPY迪尔课堂自学网-|第二课堂|--(官网)
//一些代码去修改本地html tPY迪尔课堂自学网-|第二课堂|--(官网)
} tPY迪尔课堂自学网-|第二课堂|--(官网)
} tPY迪尔课堂自学网-|第二课堂|--(官网)
</script> tPY迪尔课堂自学网-|第二课堂|--(官网)
修改以下代码:<a href="javascript:Digg('digg',4653);">顶一下</a> tPY迪尔课堂自学网-|第二课堂|--(官网)
为:<a href="javascript:_Digg('digg',4653);">顶一下</a> tPY迪尔课堂自学网-|第二课堂|--(官网)
2. 访问远程文件: tPY迪尔课堂自学网-|第二课堂|--(官网)
远程文件(http://www.xxx.com/../dig.php?type=digg&tid=456 )返回类似代码: tPY迪尔课堂自学网-|第二课堂|--(官网)
visitCountCallBack({ tPY迪尔课堂自学网-|第二课堂|--(官网)
"visitcount":135 tPY迪尔课堂自学网-|第二课堂|--(官网)
}); tPY迪尔课堂自学网-|第二课堂|--(官网)
以上代码相当于远程文件调用本地函数:visitCountCallBack tPY迪尔课堂自学网-|第二课堂|--(官网)
这样一来就可以实现利用远程返回数据来动态修改本地文件。 tPY迪尔课堂自学网-|第二课堂|--(官网)
3.总结: tPY迪尔课堂自学网-|第二课堂|--(官网)
关于此方案,目前可行,也有人认为会过时。我认为不会产生JS越权的问题。tPY迪尔课堂自学网-|第二课堂|--(官网)

扫一扫手机访问