一尘不染

到超链接中不同端口号的相对URL?

html

如果我不知道主机名,有没有Javascript /服务器端脚本编写的方法可以链接到同一框中的其他端口号?

例如:

<a href=":8080">Look at the other port</a>

(此示例不起作用,因为它将:8080视为我想导航到的字符串)


阅读 793

收藏
2020-05-10

共1个答案

一尘不染

如果这行得通,那就太好了,我不明白为什么不这样做,因为这:是URI组件内部用于端口分隔的保留字符,因此浏览器可以现实地将其解释为相对于该URL的端口,但不幸的是,它不会t,它无法做到这一点。

因此,您将需要Javascript来执行此操作;

// delegate event for performance, and save attaching a million events to each anchor
document.addEventListener('click', function(event) {
  var target = event.target;
  if (target.tagName.toLowerCase() == 'a')
  {
      var port = target.getAttribute('href').match(/^:(\d+)(.*)/);
      if (port)
      {
         target.href = window.location.origin;
         target.port = port[1];
      }
  }
}, false);

在Firefox 4中测试


更新 :修复了将端口附加到URL末尾的错误,并且还增加了对相对URL和绝对URL附加到末尾的支持:

<a href=":8080/test/blah">Test absolute</a>
<a href=":7051./test/blah">Test relative</a>
2020-05-10