Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将外部JavaScript库加载到代码中并修改库的部分内容?_Javascript_Jquery_Ajax_Web Development Server - Fatal编程技术网

将外部JavaScript库加载到代码中并修改库的部分内容?

将外部JavaScript库加载到代码中并修改库的部分内容?,javascript,jquery,ajax,web-development-server,Javascript,Jquery,Ajax,Web Development Server,我正在尝试将外部JavaScript库加载到我的代码中: var s=document.createElement(“脚本”) s、 type=“text/javascript”; s、 src=”http://vcg.isti.cnr.it/3dhop/distribution/js/presenter.js"; $(useTab).附加(s) 我知道在库presenter.js“中,我需要将一些const变量更改为var。我在服务器上下载了presenter.js”的本地副本并进行了更改,检

我正在尝试将外部JavaScript库加载到我的代码中:

var s=document.createElement(“脚本”)
s、 type=“text/javascript”; s、 src=”http://vcg.isti.cnr.it/3dhop/distribution/js/presenter.js"; $(useTab).附加(s)

我知道在库
presenter.js“
中,我需要将一些
const
变量更改为
var
。我在服务器上下载了
presenter.js”
的本地副本并进行了更改,检查了这一点。但是,我需要从internet加载该库。问题是,我可以修改一个外部JavaScript库并使我的程序工作吗

我在StackOverflow的其他地方读到,您可以尝试ajax:

$.ajax({ 方法:“GET”, 数据类型:“文本”, 网址:'http://vcg.isti.cnr.it/3dhop/distribution/js/presenter.js' }).then(function(data){data=data.replace('const SGL_TRACKBALL_NO_ACTION=0;','var SGL_TRACKBALL_NO_ACTION=0;') data=data.replace('const SGL_TRACKBALL_ROTATE=1;','var SGL_TRACKBALL_ROTATE=1;')data=data.replace('const SGL_TRACKBALL_PAN=2;','var SGL_TRACKBALL_PAN=2;')数据= data.replace('const SGL_TRACKBALL_DOLLY=3;','var SGL_TRACKBALL_DOLLY=3;')data=data.replace('const SGL_TRACKBALL_SCALE=4;','var SGL_TRACKBALL_SCALE=4;')评估(数据) })

但是我没有运气。我是JavaScript新手,因此任何帮助都将不胜感激。但我不确定我的要求是否可行。提前谢谢你

编辑:

大家好,谢谢你们的回复!好的,我尝试了以下方法:

var scripts = ["spidergl.js", "presenter.js", "nexus.js", "ply.js", "trackball_sphere.js",
    "trackball_turntable.js", "trackball_turntable_pan.js", "trackball_pantilt.js", "init.js"];

for (index = 0; index < scripts.length; index++) {
    scripts[index] = "http://vcg.isti.cnr.it/3dhop/distribution/js/" + scripts[index];
  }

  getScripts(scripts, function () {

    $(document).ready(function () {
      init3dhop();

      setup3dhop(referenceUrl, fileType);

      resizeCanvas(640, 480);

      moveMeasurementbox(70, 243);
      movePickpointbox(70, 301);

      //moveToolbar(20, 20);                                                                                                            
    });

  });
到目前为止还不错,但当我运行clowder时,我得到了错误:

Uncaught ReferenceError: SpiderGL is not defined
presenter.js
(我认为这与使用
const
而不是
var
有关)。但是,如果我刷新浏览器几次,它最终会工作!!当它工作时,控制台中不会显示错误


所以,我试图理解为什么会发生这种情况。再次感谢您的帮助

只有当端点没有CORS限制时,才能使用ajax方法。大多数服务器都有这样的限制,所以ajax通常不起作用

如果您可以找到一个没有此类限制的库托管位置,那么您就可以使用ajax—例如,JSDeliver将允许:

fetch('https://cdn.jsdelivr.net/npm/@蛇皮-presenter@0.2.0/dist/index.min.js')
。然后(res=>res.text())

.然后(console.log)您只能在端点没有CORS限制时使用ajax方法。大多数服务器都有这样的限制,所以ajax通常不起作用

如果您可以找到一个没有此类限制的库托管位置,那么您就可以使用ajax—例如,JSDeliver将允许:

fetch('https://cdn.jsdelivr.net/npm/@蛇皮-presenter@0.2.0/dist/index.min.js')
。然后(res=>res.text())

.然后(console.log)eval
是做你想做的事情的唯一方法。为什么上面的例子不走运,是什么问题?顺便说一句,在任何严肃的生产项目中,都不应该使用eval,也不应该修改外部库。如果可能的话,您应该扩展功能,否则就重写它。这个库实际上是如何打包的?您可以加载它,然后在某个对象的某个位置简单地输入新值。实际上,
eval
是执行您想要的操作的唯一方法。为什么上面的例子不走运,是什么问题?顺便说一句,在任何严肃的生产项目中,都不应该使用eval,也不应该修改外部库。如果可能的话,您应该扩展功能,否则就重写它。这个库实际上是如何打包的?您可能可以加载它,然后在某个对象的某个位置输入新值。嗨,伙计们,很抱歉保持沉默,但我在为该存储库创建JavaScript应用程序时使用的docker容器遇到了问题。嗨,伙计们,很抱歉保持沉默,但我使用docker容器为此存储库创建JavaScript应用程序时遇到问题。
Uncaught ReferenceError: SpiderGL is not defined