您的位置:首页 > 其它

基于AJAX技术编写的在线英汉互译小工具

2006-06-30 16:30 771 查看
把下面的代码存成.html文件就可以使用了,程序原理是通过XMLHttpRequest将待翻译的数据提交到远程翻译网站

体验了一把AJAX...

<html><head><title>小小翻译家</title>
<meta http-equiv="Content-Type" content="text/html; charset=zh-CN" />
<meta http-equiv="Content-Language" content="zh-CN" />
<script language="javascript">
<!--
function postData(sUrl, sData){
var syn=(external.menuArguments)?false:true; //如果是鼠标右键调用该页面xmlhttp使用同步,否则使用异步方式
if(window.XMLHttpRequest){
req = new XMLHttpRequest();
req.onreadystatechange = getReady;
req.open("POST", sUrl, syn);
req.send(sData);
}else if(window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
if(req){
try{
req.onreadystatechange = getReady;
req.open("post", sUrl, syn, "", "");
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //如果是post必须加入该head
req.send(sData);
}catch(e){
oDiv.innerHTML="出现错误:<b>"+e.message+"</b>"; //一般如果出现错误可能的原因是本机的xml版本太低或者是远程调用,注意xmlhttprequest不支持跨域的远程调用
}
}
}
}
function getReady()
{
var msg;
if(req.readyState==4){
if(req.status==200){
if(req && req.responseText){
var res=req.responseText;
if (res=res.match(/<td bgcolor=white class=s>(.+)<//td>/im)) {
res=res[0];
res=res.replace(/<//?[^>]+>/gim,"");
} else {
msg="翻译失败,请重试";
}
msg=(external.menuArguments)?res:"<span style='color:#000099;'>"+res+"</span>";
}
else msg="翻译失败,请重试";
}else{
msg = "抱歉,装载数据失败。原因:" + req.statusText
}
}
if(msg)if(external.menuArguments)alert(msg);else oDiv.innerHTML=msg;
}
function startTrans() {
oDiv = document.getElementById("result");
oDiv.innerHTML = "正在翻译...";
var s = document.getElementById("trtext").value;
s = "doit=done&intl=1&tt=urltext&trtext="+s+"&lp=";
if((/[/u4e00-/u9fa5]/gi).test(document.getElementById("trtext").value))s+="zh_en";//判断要翻译的数据是中文还是英文
else s+="en_zh";
postData("http://babelfish.altavista.com/tr", s);
}
var req, oDiv;
//-->
</script>
<body>
<script>var t=new ActiveXObject("Microsoft.XMLHTTP");t=null;//在xp sp2下默认阻止了XMLHTTP的ActiveX组件的调用,没办法我只好显式的调用以下,迫让XP给出安全提示。</script>
<input type="text" name="trtext" id="trtext" onkeypress="if(event.keyCode==13)startTrans();"> <input type="button" value="立即翻译" onclick="startTrans();">
<div id="result"></div>
<script language="JAVASCRIPT">
<!--
if (external.menuArguments) {
var parentwin = external.menuArguments;
var sel;
if (parentwin.document.selection) {
sel = parentwin.document.selection.createRange().text;
}
document.getElementById("trtext").value=sel;
startTrans();
}
//-->
</script>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: