基本标记似乎有一些非直觉的影响,我建议您在了解结果之前,先对结果进行测试并亲自进行测试
<base>!由于我是 在
尝试使用base标签处理具有不同url的本地站点 后 发现它们的 ,
并且仅在发现令人讨厌的影响之后,令我感到沮丧的是,我感到不得不为其他人创建这些潜在陷阱的摘要。重大的:
除非明确说明,否则没有链接,命名的锚点或空白的href指向原始子目录:基本标记使 所有 链接都不同,包括指向基本标记url的同一页锚点链接,例如:
<a href='#top-of-page' title='Some title'>A link to the top of the page via a named anchor</a>
变成<a href='http://www.example.com/other-subdirectory/#top-of-page' title='Sometitle'>A link to an #named-anchor on the completely different base page</a>
<a href='?update=1' title='Some title'>A link to this page</a>
变成<a href='http://www.example.com/other-subdirectory/?update=1' title='Sometitle'>A link to the base tag's page instead</a>
通过一些工作,您可以通过明确指定这些链接链接到它们所在的页面来解决您可以控制的链接上的这些问题,但是当您向第三方库添加依赖于标准行为的第三方库时,它很容易造成大混乱。
次要:要求有条件的意见IE6补丁:需要有条件的评论对IE6避免搞砸了DOM的层次结构,即
<basehref="http://www.example.com/"><!--[if lte IE6]></base><![endif]-->如
BalusC在他的回答中提到以上。
因此,总的来说,除非您对每个链接都拥有完全的编辑控制权,否则主要问题就变得棘手了,而且正如我最初担心的那样,这使麻烦变得比其价值更大。现在,我必须开始重写它的所有用法!:p
Izzy编辑: 对于你们所有人,我都对我的评论感到困惑:
我刚刚对自己进行了测试,结果如下:
- 斜线与否,使得在这里给出的实施例没有差别(
#anchor
和?query
将简单地被附加到指定的<base>
)。 - 但是,它对相对链接有所不同:省略尾部斜杠,
other.html
并dir/other.html
从document_ROOT
给定示例开始于,/other-subdirectory
被(正确地)视为文件,因此被省略。
因此,对于相对链接,
base可以在移动的页面上正常工作-
同时定位并
?queries需要明确指定文件名(带有
base斜杠,或者最后一个元素与其所使用的文件名不符)。
可以将其视为
<base>替换 文件本身 (而 不是 文件 所在目录)的 完整URL,
这样您就可以正确处理。假设此示例中使用的文件是
other-subdirectory/test.html(移至新位置后), 则正确的规范应为:
<base href="http://www.example.com/other-subdirectory/test.html“>
-等瞧, 一切都 按预期工作:
#anchor,
?query,
other.html,
very/other.html,
/completely/other.html。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)