首页 > 解决方案 > Moodle 中的 JSXGraph:是否可以将 JavaScript 代码与标签?

问题描述

假设一个人想将多个相互依赖的 JSXGraph 板添加到 Moodle 页面,但由于某种原因,它们不应该都在同一个标​​签中。在以下示例中,两个板放置在不同的表格单元格中:

<table>
    <tr>
        <th><jsxgraph width="600" height="500" box="jxgbox0"></jsxgraph></th>
        <th><jsxgraph width="500" height="500" box="jxgbox1">
            ... all JXG code here...
            </jsxgraph></th>
    </tr>
</table>

在上面的示例中,JXG 代码位于第二个 JSXGraph 标记中有点奇怪,但它可以工作。

我想要将代码与任一板分开并将其放置在表格下方的某个标签中,例如:

<table>
    <tr>
        <th><jsxgraph width="600" height="500" box="jxgbox0"></jsxgraph></th>
        <th><jsxgraph width="500" height="500" box="jxgbox1"></jsxgraph></th>
    </tr>
</table>

<script type="text/javascript">
    ... all JXG code here...
</script>

问题是这不起作用。将代码放在第三个<jsxgraph>标签中实际上是在填充两个初始板的意义上起作用,但是创建了第三个(空)板。

我现在的问题是:是否可以将 JavaScript 代码与<jsxgraph>要在页面上创建和填充的所有标签分开?

标签: moodlejsxgraph

解决方案


有一个为 jsxgraph 提供的 Moodle 插件

https://moodle.org/plugins/filter_jsxgraph

在 Moodle 中,过滤器基本上是在输出之前转换特殊内容。

我自己没有使用过 jsxgraph 过滤器,但这里有一个例子

https://github.com/jsxgraph/moodle-filter_jsxgraph/blob/master/README.md

<jsxgraph width="500" aspect-ratio="1/1">
    var brd = JXG.JSXGraph.initBoard(BOARDID, {boundingbox:[-5,5,5,-5], axis:true});
    var p = brd.create('point', [1,2]);
</jsxgraph>

如果您已经安装了过滤器,那么可能是因为box="jxgbox0"您的示例中的属性已被弃用。

boardid 或 box 已弃用

该属性定义了 JSXGraph 的图将具有哪个 id。请使用存储在 JavaScript 块中的常量 BOARDID 中的 id,尤其是对于 JXG.JSXGraph.initBoard(...) 中的第一个参数。查看用法中的示例。


推荐阅读