我为一个用经典 asp 编写的网站创建了一个伪用户控件。该控件只是一个 asp 页面(带有完整的 HTML 标题和正文),它位于父页面的 iframe 中。重点是创建一个类似 AJAX 的接口来异步上传文件(父页面包含一个大表单,我不想同时上传文件和提交表单的其余部分)。
问题是,我遇到了很多关于 iframe 页面/用户控件中使用的相对 url 的问题。根据 iframe 是哪个页面的子页面,相对 url 基本位置似乎会根据特定页面所在的目录而变化。
示例:www.website.com/directory1/application1.asp
...
<form>
<input>
...
<iframe src="../controls/FileUpload.asp"/>
...
</form>
...
www.website.com/directory1/directory2/application2.asp
...
<form>
<input>
...
<iframe src="../../controls/FileUpload.asp"/>
...
</form>
...
www.website.com/controls/FileUpload.asp
...
<form method="post" enctype="multipart/form-data" action="FileUpload.asp"><!--problem here-->
<input type="file">
<input type="submit"/>
</form>
iframe src 路径正常工作(请注意,埋藏在更深处的目录有一个额外的双点)。但是在 FileUpload.asp 页面的代码中,相对 URL 不能始终如一地工作。如果您只是按原样加载页面,而不是在另一个页面的 iframe 中,我在表单标签的 action 属性中的 URL 就可以工作。您可以将其更改为“../controls/FileUpload.asp”,它将在第一个应用程序页面上运行,但您必须添加另一个“../”才能使其在第二个应用程序页面上运行。
我想知道是否有一种方法可以使用 vbscript 找到某个文件的绝对 URL。我确实使用了一个包含文件,我可以在其中对其进行硬编码,但如果可能的话,我宁愿不这样做。还有其他想法吗?