我知道,人们可以"导入" javascript中的脚本文件如下:
var imported = document.createElement('script');
imported.src = '/path/to/imported/script.js';
document.head.appendChild(imported);
为此,文件名(此处:script.js
)及其位置必须事先知道。
我有许多可选模块,而不是在我的主项目中可以存在或不存在。每个模块都是它自己的javascript文件。我想检测scripts/
目录中存在哪一个并以上述方式运行它们,即我事先不知道文件名。我知道javascript是客户端的,无法访问服务器端目录,但可能有一个请求对象或类似的解决方法。我没有可用的服务器端脚本语言。那可能吗?
为了说明,我有一个文件/scripts/main.js
始终存在并包含在HTML文件index.html
中。然后在*.js
模块中有许多其他/scripts/
个文件。我希望main.js
自动包含它们。说明:
<!-- In index.html -->
<html><head>
<title>Include Scripts</title>
<script type="text/javascript" src="scripts/main.js">
</head><body>
<!-- ...more stuff... -->
</body></html>
虽然main.js
可能看起来像这样:
// In main.js
scripts = findScripts( 'scripts/*.js' ); // How do I do this?
for( i=0; i<scripts.length; i++ ) {
if( scripts[i].match(/main.js$/ ) continue;
var imported = document.createElement('script');
imported.src = scripts[i];
document.head.appendChild(imported);
}
然后脚本目录中的模块应该自己运行。
答案 0 :(得分:3)
由于HTML页面无法查看服务器并查看哪些文件存在,因此不会成为纯粹的前端解决方案。您有几个选择:
modules.js
,那么您只需为每个页面加载modules.js
。答案 1 :(得分:1)
不,你不能。 javascript在浏览器中运行,无权访问列出服务器上的文件。你可以搜索使用PHP或任何后端语言的方式
此处可以找到类似的讨论:Is there a way to return a list of all the image file names from a folder using only Javascript?