如何获得通过AJAX加载的JS文件识别的全局函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (25)

在我的网页上

<script src="base64.js"></script>

定义。然后在另一个文件中,我有

var xhr = new XMLHttpRequest;
...
        var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
            alert(Base64.decode("abc"));
        xhr.open("get", full + "myotherfile.js", true);
        xhr.send()

警报执行没有问题。但是在“mytoherfile.js”引用Base64类导致RerefernceError。所以在myotherfile.js的顶部我尝试了一下

import {Base64} from 'base64';

但这会导致"Uncaught SyntaxError: Unexpected token {"错误。有正确的方式来包含通过AJAX加载的JS文件中来可以识别我的全局函数?

提问于
用户回答回答于

为了清楚起见,这里有几个例子。基本上,你在花括号({ Base64})中放置的内容必须从导入的脚本中导出,而不是放在窗口中。

<script src=".../base64.js"></script>

<script>
  // both are accessible this way because this is NOT a module
  // and global variables are assumed to be on the window.
  console.log(Base64);
  console.log(window.Base64);
</script>

<script type="module">
  // Will not work:
  // import { Base64 } from ".../base64.js
  // import { window.Base64 } from ".../base64.js

  // The same as importing view the script tag
  // (not needed because the script tag already imported it)
  // import ".../base64.js"

  // the "global variable" is accessible on the window
  console.log(window.Base64)
</script>

扫码关注云+社区

领取腾讯云代金券