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

把下面的代码存成.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" οnkeypress="if(event.keyCode==13)startTrans();"> <input type="button" value="立即翻译" οnclick="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> 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值