开发者问题收集

获取 currentScript 返回 typeError

2022-01-31
239

我试图获取放在脚本标记上的自定义属性:

<script type="text/javascript" src="https://.../mysource.js" customdata="some_value"></script>

我使用以下代码,以便它可以在 IE 上运行:

document.currentScript =
  document.currentScript ||
  (function () {
    const field = document.getElementsByTagName('script');
    return field[field.length - 1];
  })();

// document.currentScript.getAttribute('customdata');

但是,当我尝试在 document.currentScript 上设置新值时,我收到以下错误。

Uncaught TypeError: Cannot set property currentScript of # < Document > which has only a getter

我仅在直接使用 document.currentScript 时解决了这个问题,但是我无法在旧版浏览器上使用。

2个回答

如果 document.currentScript 存在,则它是一个只读属性。因此,只有在不存在时才尝试设置它。

if (!document.currentScript) {
  document.currentScript = (function() {
    const field = document.getElementsByTagName('script');
    return field[field.length - 1];
  })();
}
Barmar
2022-01-31

我创建了另一个变量来保存来自文档的值,然后它起作用了并且没有显示任何错误。

heliosk
2022-02-03