5

您可以使用 JavaScript从文档中的 a 将标签附加base到文档的头部吗?我的意思是,这样做有什么缺点?我担心的是我会遇到一种竞争条件,因为标签被理解为存在于 中,因此如果页面已经呈现,它将不会得到尊重。我还没有遇到过这个问题,但我想知道这是否应该是一个问题。divbodybasehead

需要明确的是,我知道如何通过 JavaScript 做到这一点。我的问题是,如果在页面加载/呈现后将标签附加到 DOM,是否会尊重/尊重标签...

我的代码是一个 HTML 片段,可能会出现在 中body,但是我需要设置base标签,因为我的资产是相对引用的。让我们假设我不能改变它(因为我不能。至少,不是马上)。您还可以假设设置base不会破坏任何不是我的 HTML 片段并且没有其他base标签......永远。

4

4 回答 4

4

是的,例如:

<script>
var base = document.createElement('base');
base.href = 'http://www.w3.org/';
document.getElementsByTagName('head')[0].appendChild(base);
</script>

我不明白你为什么要这样做,但这是可能的。

于 2013-06-01T07:58:03.733 回答
3

我可能是错误的(或部分错误,具体取决于每个浏览器选择实现它的方式),但 AFAIK 文档 URL 库只解析一次。当您将该 BASE 元素附加到 DOM 时,已经为时已晚。

编辑:看起来我错了

显然,有办法。但是搜索引擎也有缺点。

于 2013-06-01T02:45:48.483 回答
2

Jukka 回答您为什么要这样做的问题。

例子。

诸如此类的移动应用程序phonegap是对 web 应用程序的薄包装,但足够智能,可以知道它是在浏览器中运行还是在设备上运行。

一旦它知道它在设备上,那么它就需要知道基础url,以便它可以正确定位以前作为 relative 引用URL的所有内容。

在我们的例子中,我们有 4 个不同的系统,dev, test, beta& live,每个系统都有不同URL的 s。

通常更改是增量的,但很多时候我们确实希望在每个系统之间来回测试,例如在 a/b 测试中。

由于布线布局基本相同,因此在底座上来回切换URL很有意义。

请记住,许多 Web 应用程序使用静态资产,例如用于应用程序骨架的 html 页面、用于粘合逻辑的 javascript 和基于 Web 的后端,实际上只不过是数据库上的一个薄层。例如 MEAN 应用程序经常采用这种方式。

以这种方式构建您的应用程序可以显着提高可伸缩性和响应能力,因为“Web”服务器不必像模板语言那样慢得足够长的时间来构建页面视图。

无论如何,设置基础url意味着能够动态更改应用程序获取数据的位置,并且由于代码重用,可以极大地提高开发人员的工作效率。

于 2014-09-15T22:33:30.190 回答
0

搜索引擎?曾经有一段时间,搜索引擎爬行机器人无法“理解”或运行任何 Javascript 代码。在这种情况下,这样的机器人会弄错所有的链接,并且爬行会停在那里。

所以基本上它可能会阻碍一些爬虫爬取和索引你的链接。

于 2016-10-25T09:16:11.487 回答