通用模板2
通过一个字段{{数据}}的json格式来进行适配不同的场景.
引入js文件
<script type="text/javascript" src="_jquery.min.js"> </script><script src="_vue.js"></script><script src="_jquery.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
JSON字段
如果获取不同的场景?
用type来区分。
正面字段
| 名称 | 翻译 | 代码 | 选择器 |
|---|---|---|---|
| question | 正面 | $(“#front”).html(JSONData.question) | front |
| word | 单词 | $(“#front”).html(JSONData.question) | front |
反面字段
| 名称 | 翻译 | 选择器 | |
|---|---|---|---|
| answer | 回答 | $(“#back”).html(answer) | back |
| explains | 解释,说明,这里转成表格形式 | $(“#back”).append(table) | back |
| translation | 翻译, | $(“#back”).append( table) |
back |
| wfs | 时态 | $(“#back”).append( table) |
back |
| diagram | 简图,通过搜索media的地址,匹配位置,然后转成![]() |
back | |
| media | 视频资源,之前是img这是 改为media | back |
explains
if (explains !== undefined && explains !== "") {//alert("explain")if (typeof explains == "string") {//这里可能有是字符串的情况//alert("string")var explains = JSON.parse(explains)var table = tableDemo(explains, reg2, reg3)$("#back").html(table)} else {//alert('object')var table = tableDemo(explains)$("#back").html(table)}
explainsTable
function explainsTable(JSONList, reg2, reg3) { //json列表或者内容var table1 = '<table>'for (var i = 0; i < JSONList.length; i++) {//alert(JSONList.length)var prefixArr = JSONList[i].match(reg2)//alert(prefixArr)table1 += '<tr>'if (prefixArr == null) {var temp = JSONList[i].match(reg3)// alert(temp)if (temp == null) {table1 += '<td>' + '<button type="button" onclick="playAudio(\'' + JSONList[i] +'\')">播放</button>' +JSONList[i] +'</td>'} else {table1 += '<td>' + temp[1] + '</td>'table1 += '<td>' + '<button type="button" onclick="playAudio(\'' + temp[2] + '\')">播放</button>' +temp[2] +'</td>'}} else {table1 += '<td>' + prefixArr[1] + '</td>'table1 += '<td>' + '<button type="button" onclick="playAudio(\'' + prefixArr[2] + '\')">播放</button>' +prefixArr[2] + '</td>'}console.log(JSONList[i]);table1 += '</tr>'}table1 += "</table>"//alert(table1)return table1}
| 参数 | 什么情况? | |
|---|---|---|
| jsonList | explsin的列表内容,是字符串的话要转成数组形式. | |
| reg2 | var reg2 = new RegExp(“(.\.)\s(.)”) | |
| reg3 | var reg3 = new RegExp(“\[(.)\]\s(.)”) | |
| reg | var reg = new RegExp(“(?<=~!)(.*?)(?=~@)”, “img”) |
diagram
function replaceImg2(arr, imgList, replaceContent) { //参数1为正则匹配后的数组,参数2为img列表,参数3是替换的内容if (arr == null || imgList == undefined) {//alert(x+url)return replaceContent}var num = arr.length//alert( imgList[0].url)for (i = 0; i < num; i++) {var name = arr[i]var x = arrayFindIndex(name, imgList)//alert("x"+x)var url = imgList[x].urlvar replaceContent = replaceContent.replace("~!" + name + "~@", url)}//alert(replaceContent)return replaceContent}function arrayFindIndex(imgName, imgList) { //数组找到索引//var imgList = JSONData.imgvar listNum = imgList.length//alert("图像的名称: " + listNum)for (i = 0; i < listNum; i++) {var name = imgList[i].name//alert(name)if (name == imgName) {return i}}}
| 参数 | |
|---|---|
| arr | 参数1,为正则匹配后的数组 |
| imgList | 参数2,为img列表, |
| replaceContent | 参数3,是替换的内容 |
不同场景
单词正面
问答
单词反面
先通过type判断是什么类型的在进行操作
//全局变量var data = $("#data").html();var JSONData = JSON.parse(data)var explains = JSONData.explainsvar translation = JSONData.translation//alert(translation)if (explains !== undefined && explains !== "") {//是字符串的情况下var textObj = JSON.parse(JSONData.explains)} else {if (typeof translation == "string") {var textObj = [translation]} else {var textObj = JSON.parse(JSONData.translation)}}num = textObj.lengthif (num == 1) {$("#name").html(textObj[0])} else {var randNum = getRndInteger(0, num - 1)$("#name").html(textObj[randNum])}function getRndInteger(min, max) {return Math.floor(Math.random() * (max - min + 1)) + min;}
单词听力
这里需要获取token可以用云端token的方式。
将url化
| url来源 | url | ||||
|---|---|---|---|---|---|
| 百度免费 | http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&text=百度翻译女声语音播报api | ||||
| 百度收费 | http://tsn.baidu.com/text2audio?lan=zh&cuid=123&ctp=1&per=3&spd=5&tex=“ + str + “\”&tok=” + token; | token是百度请求获取的 | |||
| 必应 | [http://api.microsofttranslator.com/v2/http.svc/speak?appId=TJnIprF8gfKIzzWSJUYbWZBxOdX4nQDJK4o5BoiI42GE*&language=zh-TW&format=audio/mp3&options=MinSize | male&text=](http://api.microsofttranslator.com/v2/http.svc/speak?appId=TJnIprF8gfKIzzWSJUYbWZBxOdX4nQDJK4o5BoiI42GE*&language=zh-TW&format=audio/mp3&options=MinSize | male&text=)必应翻译男声发音语音播报api | ||
| 有道翻译 | http://dict.youdao.com/dictvoice?audio=有道翻译女声语音播报api |
英语文章
字段名是englishArticles
将英语文章拆分成表格
反面显示中文和英语翻译
英语单词划词添加单词
//pc划词触发事件document.getElementById("front").onclick = function() {var txt = window.getSelection ? window.getSelection() : document.selection.createRange().text;alert(txt);console.log(txt);//voiceText(txt)//youdaoTransure(txt.toString())//voiceText(txt)};
function youdaoTransure(text) {if (text == '') returnvar appKey = '32e53ed53c5d5381';var key = '11vLbsXtZ3heU42vHI7RWKJXi8vwbj2A'; //注意:暴露appSecret,有被盗用造成损失的风险var salt = (new Date).getTime();var curtime = Math.round(new Date().getTime() / 1000);var query = text// 多个query可以用\n连接 如 query='apple\norange\nbanana\npear'var from = 'en';var to = 'zh-CHS';var str1 = appKey + truncate(query) + salt + curtime + key;var vocabId = '您的用户词表ID';//console.log('---',str1);var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);$.ajax({url: 'http://openapi.youdao.com/api',type: 'post',dataType: 'jsonp',data: {q: query,appKey: appKey,salt: salt,from: from,to: to,sign: sign,signType: "v3",curtime: curtime,vocabId: vocabId,},success: function(data) {console.log(data);//弹出卡片var tempstr = $("#name").text()var sentence = tempstr.replace(data.query, "<b>" + data.query + "</b>")var explains = JSON.stringify(data.basic.explains)var wfs = JSON.stringify(data.basic.wfs)var ukSpeech = data.basic["uk-speech"]var usSpeech = data.basic["us-speech"]console.log(explains);var obj = {"word":query,"explains":explains,"wfs":wfs}return obj}});}
中文文章转英语
解析json数据
var data = $("#data").html();var JSONData = JSON.parse(data)
遇到的问题
关于解析失败的原因。是json数据带有html标签
图片显示失败
把var data = $("#data").html()代码 改为var data = $("#data").text()就行了
正面&反面
通过读取数据1 的内容修改字段”正面”为” 反面”
属性和参数的方法、
在anki的写一个表格,一键添加成json数据
最后能一键从网页上复制就行了
| url | String | 是 | 开发者服务器接口地址 | |
|---|---|---|---|---|

