在传统的 Domino Web 应用程序中。 我在资源中添加了一个名为“msg.js”的文件资源。 它包括一个功能:
function testRef() {
alert('this works');
}
我需要从浏览器中 Domino 表单上的按钮调用此函数。 按钮背后的代码很简单:
testRef()
问题在于如何真正包含文件资源。 我不太确定正确的语法,无论是否相对(首选)路径。 我尝试过以下方法:
<script type="text/javascript" src="/Resources/Files/msg.js"></script>
<script type="text/javascript" src="/Files/msg.js"></script>
<script type="text/javascript" src="/msg.js"></script>
<script type="text/javascript" src="msg.js"></script>
这些都不起作用。 我究竟做错了什么? 我在网上搜索了有关使用此类文件资源的教程,但尚未找到与我的场景相匹配的示例。
仅供参考,我需要这个,因为我正在使用一个开源库,该库使用比我的 Domino Designer 支持的更现代的 javascript 语法,因此它不会让我直接将其保存在脚本库中。
理想情况下,不要将 javascript 文件放在资源/文件下。这可能会导致一些问题,尽管我将在本答案的末尾描述一些解决方法。
而是在代码/脚本库下创建一个新的 javascript 库,并将 javascript 文件的内容复制到其中。
如果它是在代码/脚本库下创建的,那么您可以在表单设计中执行此操作:
如果执行上述操作,那么 Domino 服务器在为 Web 浏览器呈现 HTML 时将生成 javascript 文件的正确路径。
有一种情况无法使用上述方法:Domino Designer 的 javascript 编辑器具有过时的验证规则,并且不接受某些较新的 javascript 语法。如果您想要或需要使用 javascript 库中不允许的 javascript 语法,那么您应该在资源/文件下添加您的 javascript。
如果您的 javascript 位于“资源/文件”下,那么您需要查看该文件的 Web 属性并将其 MIME 类型设置为“text/javascript”。如果您不设置 MIME 类型,许多浏览器将无法加载它。
正确设置 MIME 类型后,在 Web 浏览器中打开表单(即 URL 包含类似“FormName?OpenForm”的内容)时,此
script
标记应该起作用:<script type="text/javascript" src="msg.js"></script>
打开使用表单创建的文档时,上面的
script
标签不会起作用。在文档中,您需要以下相对标签:<script type="text/javascript" src="../msg.js"></script>
...或者带有绝对 URL 的标记,其中包含相对于 Domino 服务器数据目录的数据库路径。
您不能在 URL 中使用“/Resources/Files”来指向数据库中资源/文件下显示的文件。 “资源”或“文件”都不作为服务器上的实际目录存在。它们只是 Domino Designer UI 中的类别。