Javascript 将OpenJSCAD集成到MediaWiki中

Javascript 将OpenJSCAD集成到MediaWiki中,javascript,mediawiki,openjscad,Javascript,Mediawiki,Openjscad,我所知道的显示JSCad设计的当前解决方案: 所有这些都需要相当多的基础设施才能工作 基于用户指南中的节点 州 该网站可以集成到现有网站中 但没有说如何 有消息来源。最近一次修改是在2017年(截至本帖发布时间约2年前)。 它使用了十几个javascript文件和jekyll来实现它的目的 例如: 页面的源代码非常小: <!DOCTYPE html> <html lang="en"> <head> <meta charset

我所知道的显示JSCad设计的当前解决方案:

所有这些都需要相当多的基础设施才能工作


基于用户指南中的节点

该网站可以集成到现有网站中

但没有说如何

有消息来源。最近一次修改是在2017年(截至本帖发布时间约2年前)。 它使用了十几个javascript文件和jekyll来实现它的目的

例如:

页面的源代码非常小:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JSCAD Gallery s-hook</title>
    <link rel="stylesheet" type="text/css" href="/jscad-gallery/site.css"/>
    <script src='/jscad-gallery/browser_modules/@jscad/csg/0.3.7.js' type="text/javascript"></script>
    <script src='/jscad-gallery/js/jscad-viewer.js' type="text/javascript"></script>
    <script src='/jscad-gallery/js/ui.js' type="text/javascript"></script></head>
<body>
    <h1>s-hook</h1>

<p>a simple S-hook design</p>


<div id="detail-viewer"></div>

<div id="inputs"></div>

<button onclick="detailView.export('stl', document.getElementById('download'))">Generate STL</button>
<div id="download"></div>

<script>

    var design = {
        title: "s-hook",
        updated: null,
        author: "Joost Nieuwenhuijse",
        version: "1.0.0",
        dependencies: [{"@jscad/scad-api":"^0.4.2"}],
        image: "/browser_modules/s-hook/thumbnail.png",
        camera: {"angle":{"x":-60,"y":0,"z":-45},"position":{"x":0,"y":0,"z":116}}
    };

    var detailView = new JscadGallery.DesignView();
    detailView.load(document.getElementById('detail-viewer'), design, document.getElementById('inputs'));

</script>


    <footer>
        <a href="https://github.com/danmarshall/jscad-gallery">Jscad-gallery on GitHub</a>
    </footer>
</body>
</html>
原因似乎在openjscad.js中:

//回调:应该是函数(错误,csg)
OpenJsCad.parseJsCadScriptASync=函数(脚本、主参数、选项、回调){
var baselibraries=[
“csg.js”,
“openjscad.js”
];
var baseurl=document.location.href.replace(/\?*$/,“”);
var openjscadurl=baseurl;
如果(选项['openJsCadPath']!=null){
openjscadurl=OpenJsCad.makeAbsoluteUrl(选项['openJsCadPath'],baseurl);
}
var库=[];
如果(选项['libraries']!=null){
库=选项['libraries'];
}
...
}
openjscadurl取自基本路径,Mediawiki的基本路径为../index.php

我如何解决这个问题?


所需的最少javascript文件集是多少,这些文件的正确版本是多少?

将baseurl计算更改为:

//警报(document.location);
var baseurl=document.location.href.replace(/index.php\/.*$/,'extensions/OpenJsCad/');
//警报(baseurl);
修正了这个问题

看看结果如何

作为概念的证明

现在有了Mediawiki模板

我仍然想了解应该使用的javascript文件和版本。由于当前的方法使用了一些过时的javascript文件,甚至无法从中呈现OpenJSCAD徽标代码,因此的1.10.0版本允许您使用单个包托管JsCad文件

虽然这并不能直接帮助您,但我有一个Vue组件,允许您在以下位置显示JsCad文件:

您可以使用它来更新Mediawiki插件


这看起来棒极了!。作为一个新手,我现在需要一些关于如何以及在何处应用-standalone开关和进行实际集成的文档
Error in line 466: NetworkError: Failed to load worker script at http://wiki.bitplan.com/index.php/csg.js (nsresult = 0x804b001d)