0

我想导入collection.media不是声音、图像或视频的文件。例如我想导入一个 JSON 文件。

我把文件_script.jquery-3.3.1.min.js_data.json我的collection.media文件夹。

在 Anki 桌面 (Ubuntu) 上,以下工作:

<script src="_script.jquery-3.3.1.min.js"></script>

<script>
$.getJSON('_data.json', function(data) {
    // succeeds on Anki Desktop, fails on AnkiDroid
});
</script>

(注意 Anki Desktop 2.0.47 我使用的是 JS Booster 插件)。

在 AnkiDroid 上,情况有所不同。JQuery 在脚本标签中加载得很好。但是,$.getJSON找不到_data.json文件。

我想_data.json在许多卡片/笔记上使用。

如何collection.media以在 Anki Desktop 和 AnkiDroid 中都适用的方式从 javascript 中导入非媒体、非 js 文件?

4

2 回答 2

1

我为此找到了一些可行的答案。在 AnkiDroid 卡片模板中获取角色数据。(离线)

因为我们可以使用这个访问js和图像文件

<script src="some-js-file.js"></script>
<img src="some-image.png"></img>

要访问json ,我尝试了相同的步骤,但CORS出现错误,因此我使用了后续步骤。

<!-- It will give CORS error -->
<script src="我.json" type="application/json"></script>

例如,访问我.json文件

  1. 将 的内容复制我.json到 javascript 文件我.js中,使用任何变量名,
var char_data = {"strokes":["M 350 571 Q 3....}
  1. 添加以下标签以访问该 js 文件
<!--  Note : file type & name -->
<script src="我.js" type="text/javascript"></script>
  1. 现在也更改代码_hanzi-writer.min.js

要更改代码,首先使用此https://beautifier.io美化代码,然后进行以下更改 a) 删除要从 Internet 加载的链接 b) 更改此内容200 != r.status并替换/添加此内容

JSON.parse(JSON.stringify(char_data))

(可能更好的替换可以在这里完成)

汉字作家

....
....
// Note :  char_data variable come from 我.js file
r.overrideMimeType && r.overrideMimeType("application/json"), r.open("GET", "", !0), r.onerror = function(t) {
....
....
 4 === r.readyState && (200 != r.status ? i(JSON.parse(JSON.stringify(char_data))) : 0 !== r.status && n && n(r))
....
....
  1. 所以最终的脚本会像这张卡片的正面
{{Pinyin}}

<div id="character-target-div"></div>

<script src= "我.js" type="text/javascript"></script>
<script>
var data = JSON.stringify(char_data);
console.log(data);
</script>

<script src="_hanzi-writer.min.js"></script>

<script>
var writer = HanziWriter.create('character-target-div', '我', {
  width: 150,
  height: 150,
  showCharacter: false,
  padding: 5
});
writer.quiz();
</script>

以上所有步骤都是针对单个文件的我.js

要访问其他字符重复相同。

对于类似的问题查看我的代码
https://github.com/infinyte7/Anki-xiehanzi
https://github.com/infinyte7/hanzi-writer-data-in-javascript

于 2020-06-10T14:42:56.663 回答
0

我认为这与 AnkiDroid 如何处理collections.media文件有关。如果是这样,这可能是一个错误。一个非常棘手的解决方法可能是将文件重命名为,.svg以便 AnkiDroid 将其视为图像并让它通过。

于 2018-06-20T16:55:15.173 回答