javascript - 是否有一种标准的方法来获取类似于 image.src 工作方式的完整 URL

标签 javascript html url

我有一个相对、绝对和完全限定的 URL,我想将其转换为完全限定的 URL。我可以像这样滥用 img 标签来做到这一点

[
   "someFolder/someFile.foo",                       // relative
   "/someRootFolder/someFile.foo",                  // absolute
   "https://somedomain.com/someFolder/someFile.foo", // FQ
].forEach(path => {
  var img = new Image();
  img.src = path;
  console.log(img.src);  // returns FQ for all URLs;
});

如果你运行它,结果是

https://stacksnippets.net/someFolder/someFile.foo
https://stacksnippets.net/someRootFolder/someFile.foo
https://somedomain.com/someFolder/someFile.foo

滥用 Image 来做这件事似乎是错误的。首先它是一个图像标签,我的 URL 与图像无关,其次我不想触发网络请求。

URL 不起作用,因为它在前 2 个 URL 上都会失败

Uncaught TypeError: Failed to construct 'URL': Invalid URL

我想也许 window.location 会有一个函数 getURL 或者你可以传递路径的东西,它需要它为 image.src 做的任何事情,但我不知道在 MDN 上看不到任何东西.

是否有另一种方式同样简单(1/2 行)但不使用图片标签且不会引起网络请求?

最佳答案

这通常是通过 <a> 完成的标签。

[
   "someFolder/someFile.foo",                       // relative
   "/someRootFolder/someFile.foo",                  // absolute
   "http://somedomain.com/someFolder/someFile.foo", // FQ
].forEach(path => {
  let a = document.createElement('a');
  a.href = path;
  console.log(a.href);  // returns FQ for all URLs;
});

<img> 相比,它还有其他优势因为它包含一些 window.location喜欢属性:

喜欢hash , pathname , path , origin ,也许还有其他我忘记了。

[
   "someFolder/someFile.foo#hi",                       // relative
   "/someRootFolder/someFile.foo#hi",                  // absolute
   "http://somedomain.com/someFolder/someFile.foo#hi", // FQ
].forEach(path => {
  let a = document.createElement('a');
  a.href = path;
  console.log(a.pathname, a.origin, a.host, a.hash);  // and maybe some others
});

关于javascript - 是否有一种标准的方法来获取类似于 image.src 工作方式的完整 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41843992/

相关文章:

javascript - ajax - Div 文本不改变

javascript - 从另一个函数调用 jQuery UI Datepicker

javascript - ServiceWorker 'fetch' 事件未针对图标触发

html - float 到两侧的 CSS 标注流动不正确

java - HttpClient 和非 ASCII URL 字符(á、é、í、ó、ú)

C# 问题 - 如何将页面 URL 和 Href 转换为绝对 URL/URI?

python - 关于 Django 在 urlpattern 中的 pk

javascript - 尝试在 javascript 中应用 CSS 转换

html - 我怎样才能让一个 div 表现得好像它在带有 Bootstrap 的不同设备上一样?

java - Spring Boot 白标 404