首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将外部JavaScript库加载到代码中并修改库的部分?

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

Stack Overflow用户
提问于 2020-10-07 18:08:30
回答 1查看 595关注 0票数 0

我试图将外部JavaScript库加载到我的代码中:

var s= document.createElement("script");

s.type = "text/javascript";s.src = "http://vcg.isti.cnr.it/3dhop/distribution/js/presenter.js";$(useTab).append(s);

我知道,在库presenter.js"中,我需要将一些const变量转换为var。我在服务器上下载了presenter.js"的本地副本并进行了更改,从而进行了检查。然而,我需要从互联网上加载那个图书馆。问题是,我能否修改外部JavaScript库并使我的程序工作?

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

$.ajax({ method:'GET',dataType:'text',url:'http://vcg.isti.cnr.it/3dhop/distribution/js/presenter.js‘}).then( 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.replace('const SGL_TRACKBALL_SCALE = 4;','var SGL_TRACKBALL_SCALE = 4;') data.replace( data )}

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

编辑:

嗨,伙计们,谢谢你们的回应!好的,我尝试了以下几点:

代码语言: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);                                                                                                            
    });

  });

以下是实用程序函数getScripts

代码语言:javascript
复制
function getScripts(scripts, callback) {
  var progress = 0;
  scripts.forEach(function (script) {
    $.getScript(script, function () {
      if (++progress == scripts.length) callback();
    });
  });
}

到目前为止还不错,但是当我跑小丑的时候,我会发现一个错误:

代码语言:javascript
复制
Uncaught ReferenceError: SpiderGL is not defined

presenter.js相关(我认为这与使用const而不是var有关)。但是,如果我刷新浏览器几次,它最终会工作!!当它工作时,控制台中不会出现错误!

所以,我想弄明白为什么会这样。再次感谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-10-07 18:15:54

只有在端点没有CORS限制时才能使用ajax方法。大多数服务器都有这样的限制,因此ajax通常无法工作。

如果您可以找到一个不受这些限制的库托管的地方,就可以使用ajax --例如,jsdelivr将允许这样做:

代码语言:javascript
复制
fetch('https://cdn.jsdelivr.net/npm/@snakesilk/react-presenter@0.2.0/dist/index.min.js')
  .then(res => res.text())
  .then(console.log);

给定源代码后,您可以修改它的客户端,最后将修改后的代码附加为<script>标记。

但这真的很奇怪。对库进行分叉、进行所需的修改以及在您控制的服务器上承载修改过的脚本将更有意义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64249900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档