Anki和AnkiDroid:使用javascript从collection.media导入JSON

时间:2018-05-24 15:27:36

标签: anki

我想从collection.media导入非声音,图片或视频的文件。例如,我想导入一个JSON文件。

我将文件_script.jquery-3.3.1.min.js_data.json放在我的collection.media文件夹中。

在Anki Desktop(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

如何在javascript中从collection.media导入非媒体,非js文件,这种方式在Anki Desktop和AnkiDroid中都有效?

2 个答案:

答案 0 :(得分:0)

我认为这与AnkiDroid处理collections.media文件的方式有关。如果是这样,这可能是一个错误。一个真正的变通办法是将文件重命名为.svg,以便AnkiDroid将其视为图像并允许其通过。

答案 1 :(得分:0)

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

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

id "com.jfrog.bintray" version "1.8.5"

访问plugins.apply(BintrayPlugin::class.java) 我尝试了相同的步骤,但遇到<script src="some-js-file.js"></script> <img src="some-image.png"></img> 错误,因此我使用了后续步骤。

json

例如, 要访问CORS文件

  1. <!-- It will give CORS error --> <script src="我.json" type="application/json"></script> 的内容复制到具有任何变量名称的javascript文件我.json中,
我.json
  1. 添加以下标记以访问该js文件
我.js
  1. 现在还可以更改var char_data = {"strokes":["M 350 571 Q 3....} 中的代码

要更改代码,请首先使用此https://beautifier.io美化代码,然后进行以下更改 a)删除链接以从Internet加载 b)更改此<!-- Note : file type & name --> <script src="我.js" type="text/javascript"></script> 并替换/添加

_hanzi-writer.min.js

(也许可以在这里进行更好的替换)

HanziWriter

200 != r.status
  1. 因此最终脚本将如下所示 卡的正面
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)) .... ....

要访问其他字符,请重复相同的操作。

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