【问题标题】:Microsoft Edge bug, empty href and base tagMicrosoft Edge 错误、空 href 和基本标记
【发布时间】:2015-11-06 07:04:22
【问题描述】:

Microsoft 的新浏览器 Edge 似乎不接受像 <a href=""> 这样的空 href。在所有其他浏览器中,这可用于链接到base 标记。虽然在 Edge 中似乎并非如此。

我通过在这个question 中将href 设置为./ 找到了解决这个问题的方法。

但不得不在许多网站上更改此设置相当麻烦。还有其他不需要更改所有href的替代方法吗?

提前致谢。

【问题讨论】:

  • 我测试,一切正常,我看没问题!!!
  • 我请一些人测试这个错误,他们都有同样的问题,链接似乎不起作用。也许问题出在我对基本标签的格式上。你能发布一个你的版本的例子吗?
  • 你能发布一个损坏的版本吗,亚历克?
  • 我正在使用这个基本标签 <base href="https://www.example.com"> 和一个格式如下的链接 <a href="">example</a>。
  • 这绝对是 Microsoft Edge 中的错误/疏忽。正如 RFC 3986(tools.ietf.org/html/rfc3986,第 4 节和第 5 节)所述,基本 URI 必须添加到任何相对引用之前 - 空路径也是相对引用(第 4.2 节)。

标签: html href dry microsoft-edge base-tag


【解决方案1】:

使用实用函数重写空的href。例如:

function rewrite_empty_hrefs()
  {
  var dom_parser = new DOMParser();

  var xml_serializer = new XMLSerializer();
  
  var old_html_dom = dom_parser.parseFromString(document.body.innerHTML,"text/html");

  var base_href = old_html_dom.querySelector("base").href;

  var old_xhtml_string = xml_serializer.serializeToString(old_html_dom);

  var new_xhtml_string = old_xhtml_string.replace(/(href=")(")/g, "$1"+base_href+"$2"); 

  document.body.innerHTML = new_xhtml_string;
  }

rewrite_empty_hrefs();
<base href="http://www.example.com">
<a href="">example.com</a>
<a href="">example.org</a>
<a href="">example.net</a>

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2018-06-08
    • 2018-03-11
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多