Javascript 获取当前JS web组件的路径
我有一个JS web组件需要加载到其他资源中(特别是添加到DOM中的Javascript 获取当前JS web组件的路径,javascript,relative-path,web-component,Javascript,Relative Path,Web Component,我有一个JS web组件需要加载到其他资源中(特别是添加到DOM中的iframe的src,但这对于任何具有相对路径的资源来说都是一个问题) 需要相对于调用页面指定此资源,我可以从window.location轻松地获得该页面 然而,它需要指向src的文件是相对于正在执行的JS文件的,因为这是一个组件,所以我不能确定它将在哪里 因此: example.com/index.html |__>{未知路径}/web-component.js |__>{unknown path}/resource.htm
iframe
的src
,但这对于任何具有相对路径的资源来说都是一个问题)
需要相对于调用页面指定此资源,我可以从window.location
轻松地获得该页面
然而,它需要指向src
的文件是相对于正在执行的JS文件的,因为这是一个组件,所以我不能确定它将在哪里
因此:
example.com/index.html
|__>{未知路径}/web-component.js
|__>{unknown path}/resource.html我有一个潜在的解决方案,但它同时存在潜在的浏览器兼容性和性能问题
其思想是newerror()。堆栈包括执行的文件的路径
所以
它依赖于堆栈的格式、堆栈的内容和newerror()
在加载时不会导致任何性能问题,因此欢迎使用更好的方法回答 这个答案可能有帮助:@admcfajn干杯,但这适用于node.js,我在一个web环境中。我可以使用node.js服务器端来编辑文件,使其具有硬编码的路径,但这实际上是最后的手段。是的,我不认为这种情况下有一种一刀切的方法。下面是个好主意。这一个可能也有帮助:您在web环境中,但您正在使用node进行预编译,对吗?@admcfajn不是我自己-此项目是一个web组件,我使用TS,但我希望输出在没有复杂构建链的情况下可用(来源:)
example.com/index.html
|__> {unknown path}/web-component.js
|__> {unknown path}/resource.html <-- I want to get this
// Get stack string
const stack = new Error().stack.split('at');
// Get the last entry
const scriptPath = stack[stack.length - 1].trim();
// The component will share the path up to the last slash
const componentPath = scriptPath.substring(0, scriptPath.lastIndexOf('/'));