html <base>标签有哪些建议?

我从未见过 在任何地方实际使用<base>HTML标记使用它有陷阱吗,这意味着我应该避免使用它?

我从来没有注意到它在现代生产站点(或任何站点)上使用过的事实,使我对此感到不安,尽管它似乎具有简化我站点上链接的有用应用程序。


编辑

在使用基本标签几周后,我确实发现使用基本标签会引起一些重大麻烦,这使它比最初出现的效果要差得多。从本质上讲,变化href='#topic'href=''基本标签下是非常有它们的默认行为不兼容,并可以从默认行为,这种变化很容易使第三方库的控制之外非常不可靠 因为它们在逻辑上将取决于默认行为,因此它们以意想不到的方式运行。所做的更改通常很细微,在处理大型代码库时会导致不那么明显的问题。此后,我创建了一个答案,详细说明了我在下面遇到的问题。因此,在您承诺广泛部署之前,请先亲自测试链接结果<base>,这是我的新建议!

泡芙LEY2020/03/20 10:11:25

也有一个使用base-标签的站点,发生了描述的问题。(升级jquery后),可以通过使用如下所示的标签网址来解决此问题:

<li><a href="{$smarty.server.REQUEST_URI}#tab_1"></li>

这使他们成为“本地人”

我使用的参考:

http://bugs.jqueryui.com/ticket/7822 http://htmlhelp.com/reference/html40/head/base.html http://tjvantoll.com/2013/02/17/using-jquery-ui-带基本标签的标签/

凯樱2020/03/20 10:11:25

与AngularJS一起使用时,BASE标记无声地破坏了$ cookieStore,花了我一段时间才弄清楚为什么我的应用程序无法再编写Cookie。被警告...

小小猿2020/03/20 10:11:25

要记住的一件事:

如果要开发要在iOS的UIWebView中显示的网页,则必须使用BASE标签。否则它将根本无法工作。如果是JavaScript,CSS,图像-除非指定了标记BASE,否则它们都不能与UIWebView下的相对链接一起使用。

之前我一直被这个困扰,直到发现为止。

JinJin理查德2020/03/20 10:11:25

好,等一下。我认为基本标签不应该享有这个不良声誉。

基本标记的好处是,它使您可以轻松进行复杂的URL重写。

这是一个例子。您决定将http://example.com/product/category/thisproduct移到http://example.com/product/thisproduct您更改.htaccess文件以将第一个URL重写为第二个URL。

有了基本标签后,就可以重写.htaccess了。没问题。但是,如果没有基本标记,则所有相对链接都会中断。

URL重写通常是必要的,因为调整它们可以帮助您的网站架构和搜索引擎可见性。的确,您将需要解决人们提到的“#”和“”问题的解决方法。但是基本标记在工具箱中应有位置。

Gil樱Green2020/03/20 10:11:25

我从来没有真正看到过使用它的意义。提供很少的优势,甚至可能使事情变得更难使用。

除非您碰巧有成百上千的链接,否则所有链接都指向同一个子目录。这样可以节省一些带宽。

事后想想,我似乎记得IE6中的标记存在一些问题。您可以将它们放置在体内的任何位置,从而将站点的不同部分重定向到不同的位置。该问题已在IE7中修复,该网站破坏了很多站点。

梅猿2020/03/20 10:11:25

Drupal最初依赖<base>标签,后来由于HTTP搜寻器和缓存的问题决定不使用标签。

我通常不喜欢发布链接。但这确实值得分享,因为它可能会有益于那些希望通过<base>标签获得真实体验的人们

http://drupal.org/node/13148

JinJinGreen伽罗2020/03/20 10:11:25

它可能不是很流行,因为它并不知名。我会担心使用它,因为所有主要的浏览器都支持它。

如果您的网站使用AJAX,则需要确保所有页面的设置都正确,否则您可能会获得无法解析的链接。

只是不要target在HTML 4.01 Strict页面中使用该属性。

阳光老丝2020/03/20 10:11:24

另外,您应该记住,如果您在非标准端口上运行Web服务器,则还需要在base href上包括端口号:

<base href="//localhost:1234" />  // from base url
<base href="../" />  // for one step above
神奇米亚神乐2020/03/20 10:11:24

对于页面中内联的SVG图像,base使用标记时会出现另一个重要问题

由于有了base标记(如上所述),您有效地松散了使用相对哈希URL的能力,例如

<a href="#foo">

因为它们将根据基本URL而不是当前文档的位置进行解析,因此不再是相对的。因此,您必须将当前文档的路径添加到此类链接中,例如

<a href="/path/to/this/page/name.html#foo">

因此,该base标签看似积极的方面之一(这是将较长的URL前缀从anchor标签上移开,并获得更好的,较短的anchor)完全适得其反。

当在页面中内联SVG时,这是特别烦人的,无论是静态SVG还是动态生成的SVG,因为在SVG中可能有很多这样的引用,并且base在大多数(但不是全部)用户上,只要使用了标记,它们就会全部中断。代理程序的实现(在撰写本文时,Chrome至少仍可在这些情况下使用)。

如果您使用的是处理/生成页面的模板系统或其他工具链,我将始终尝试摆脱base标记,因为如我所见,它给表带来的问题比解决的多。

神奇宝儿2020/03/20 10:11:24

井号“#”目前可与基本元素一起用于跳转链接,但仅适用于最新版本的Google Chrome和Firefox,而不是IE9。

IE9似乎导致页面被重新加载,而没有跳转到任何地方。如果在iframe的外部使用跳转链接,同时指示框架将跳转链接加载到框架内的单独页面上,则将获得在框架内部加载的跳转链接页面的第二份副本。

小哥猴子2020/03/20 10:11:24

它使页面更易于离线查看;您可以将完全限定的URL放在base标记中,然后您的远程资源将正确加载。