Ошибка Microsoft Edge, пустой href и базовый тег
Новый браузер Microsoft Edge, похоже, не принимает пустые ссылки, такие как <a href="">
, Во всех других браузерах это можно использовать для ссылки на base
тег. Хотя в Edge это не так.
Я нашел решение этой проблемы, установив href в ./
в этом вопросе.
Но необходимость изменить это на многих сайтах довольно хлопотно. Есть ли другие альтернативы, которые не требуют менять все ссылки?
Заранее спасибо.
1 ответ
Используйте служебную функцию, чтобы переписать пустые ссылки. Например:
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>
Рекомендации