javascript 从服务器添加.js文件作为html文件中的源

v1l68za4  于 2023-01-11  发布在  Java
关注(0)|答案(4)|浏览(140)

我有一个HTML文件在我的服务器上,和一个Javascript文件在同一服务器上。我希望它,以便当我加载HTML文件,它将参考。js文件放在服务器上。
我试着这样说:

<html>
    <head>
        <script type="text/javascript src="...server side path...."></script>
    </head>
</html>

但是它不起作用。有人能告诉我怎么做吗?!我附上了代码

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form="http://www.w3.org/2002/xforms" xml:lang="en">
<head>
<script type="text/javascript" src="~/FormFaces/formfaces.js"></script>
<form:model>
<form:instance>
    <data xmlns="">
<textbox1></textbox1>
<textbox2></textbox2>
<textbox3></textbox3>
    </data>
</form:instance>
</form:model>
</head>

<body>
<table><tr><td><form:input ref="textbox1">
<form:label>TextBox1</form:label>
</form:input>
</td><td><form:input ref="textbox2">
<form:label>TextBox2</form:label>
</form:input>
</td></tr><tr><td><form:input ref="textbox3">
<form:label>TextBox3</form:label>
</form:input>
</td><td></td></tr>
</table></body>
</html>

'我希望将formfaces.js文件包含在我的Text.html文件中。但是,当我在浏览器中通过本地服务器运行text.html文件时,它不会加载formfaces.js文件。如果我手动运行该文件,一切正常

qv7cva1a

qv7cva1a1#

我猜问题可能是你不知道如何创建javascript文件的路径。
如果是这种情况,最简单的方法是先尝试将两个文件(HTML和js文件)放在同一个目录下,只使用文件名而不使用路径:

<script type="text/javascript" src="somefile.js"></script>

这应该总是有效的。然后如果你想在不同的地方尝试一个文件,你应该使用相对路径。想象一下你的文件是这样放置在硬盘上的:

c:
  folder1
     subfolder1
        file.html 
     subfolder2
        somescript.js
  someother.js

然后,从htmljs文件的引用如下:

<script type="text/javascript" src="../subfolder2/somescript.js"></script>
<script type="text/javascript" src="../../someother.js"></script>
    • 编辑:**

客户端上的路径不能包含~符号。该符号应由服务器端分析(即在<% %>标记内)。
要么使用安全的相对路径,就像我上面描述的那样,要么使用服务器端代码来创建路径(参见另一个问题:https://stackoverflow.com/a/697674/146513

wbgh16ku

wbgh16ku2#

Javascript文件在 * 客户端 * 上读取和执行。
您需要使用客户端路径;浏览器将向该URL发送HTTP请求。

ulydmbyx

ulydmbyx3#

用这个

var sc=document.createElement('script');
sc.src="script.js";
document.getElementsByTagName('head')[0].appendChild(sc);

有些时候使用js之类的资源,css从跨域浏览器安全不允许使用这个。
如果问题没有解决,我不确定,但这可能会帮助你

<script>
     window.domain = "YOUR_DOMAIN.COM";
</script>
qhhrdooz

qhhrdooz4#

方法1:在服务器上设置GET响应
如果你正在运行node express服务器,那么下面是如何做到这一点:
在HTML文件中:

<script type='module' src="test.js"></script>

在服务器端的javascript文件中。你需要安装npm路径模块,这样你就可以使用__目录名来操作路径。你需要学习路径是如何工作的,这是非常重要的技能。
现在在服务器端,代码如下:

app.get('/test.js', (req,res)=> {
    res.sendFile(path.resolve(__dirname, '..', 'test.js'));
})

下面是完整的代码:

const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.resolve(__dirname, '..', 'public')));

app.get('/test.js', (req,res)=> {
    res.sendFile(path.resolve(__dirname, '..', 'test.js'));
})

const port = 1000;
app.listen(port, console.log(`listening on port: ${port}`));

方法2:使用express静态功能(参见上面的视频)
例如:

app.use(express.static(path.resolve(__dirname, '..', 'public')));
app.use(express.static(path.resolve(__dirname, '..', 'jsFiles')));

app.use(express.static('foldername')

现在把你的JS文件放到这个文件夹中。2这允许客户端接收静态文件,而不需要GET请求。
在HTML文档中,假设JS文件位于根目录下,它会为您加载该文件:

<script type='module' src="test.js"></script>

方法3:将JS文件与HTML文件放在同一个文件夹中
或者,只需将JS文件放入HTML文件所在的文件夹中。
并在HTML文件中使用以下代码:

<script type='module' src="test.js"></script>

我已经在我的YouTube频道here上创建了一个关于如何做到这一点的视频。

相关问题