作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
// html data loaded from [http://example.org/some/path]
let htmlSource = `<!DOCTYPE html><html><head></head><body>
... <a href="relative"></a> ...
</body></html>`;
const dom = new DOMParser().parseFromString(htmlSource, 'text/html');
// this returns the value of the attribute as is
dom.links[0].getAttribute('href'); // -> "relative" / nothing new here
// this should resolve urls
dom.links[0].href // -> wait, relative to WHAT??
// if you run this code while being on [http://google.com] you'll get
dom.links[0].href // -> "https://www.google.com/relative"
// Also,
dom.location // -> null / you can't change it
dom.baseURI // -> "https://www.google.com/" / read-only
所以看起来 DOMParser
隐式强制使用当前页面 location
作为新 HTMLDocument
的 baseURI
.
为什么不给开发者一个选项(第三个参数?)来明确指定文档位置?
有没有办法让 DOMParser
尊重可选的基本 url?解决方法?
最佳答案
您必须在 html 代码中使用 base
标签,您甚至可以动态添加它。这是您的示例:
const htmlSource = `
<!DOCTYPE html>
<html>
<head>
<base href="https://www.example.com/">
</head>
<body>
<a href="relative"></a>
</body>
</html>`;
const dom = new DOMParser().parseFromString(htmlSource, 'text/html');
console.log('DOM link ->', dom.links[0].href);
将输出:
DOM link -> https://www.example.com/relative
动态添加:
let baseEl = dom.createElement('base');
baseEl.setAttribute('href', 'https://www.example.com');
dom.head.append(baseEl);
关于url - DOMParser 中的可选 baseURI(位置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55232202/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!