您可以使用JavaScript在base
文档的div
中将body
标记附加到文档的头部吗?我的意思是,这样做有什么缺点?我担心的是,我会遇到某种竞争条件,因为base
标记被理解为存在于head
中,因此如果页面已经被渲染,它将不会得到尊重。我还没有遇到过这个问题,但我想知道它是否应该引起关注。
要清楚,我知道 如何通过JavaScript执行此操作。我的问题是,如果标记在页面加载/渲染后附加到DOM,是否会得到尊重/尊重...
我的代码是一个可能出现在body
中的HTML片段,但我需要设置base
代码,因为我的资产是相对引用的。让我们假设我不能改变它(因为我不能。至少,不是马上)。您还可以假设设置base
不会破坏任何不是我的HTML片段以及没有其他base
标记的东西......
答案 0 :(得分:3)
我可能错了(或者部分错误取决于每个浏览器选择如何实现),但AFAIK文档URL基只被解析一次。当你将BASE元素附加到DOM时已经太晚了。
编辑:看起来我错了
显然,there is a way。但是搜索引擎也存在缺点。
答案 1 :(得分:2)
是的,例如:
<script>
var base = document.createElement('base');
base.href = 'http://www.w3.org/';
document.getElementsByTagName('head')[0].appendChild(base);
</script>
我没有看到为什么你想要这样做,但这是可能的。
答案 2 :(得分:2)
Jukka回答你想要这样做的问题。
示例强>
移动应用程序,例如phonegap
,它是围绕网络应用程序的薄包装,但足够聪明,可以知道它是在浏览器中还是在设备上运行。
一旦它知道它在设备上,那么它需要知道基础url
,以便它可以正确定位之前被称为相对URL
s的所有内容。
在我们的案例中,我们有4个不同的系统,dev
,test
,beta
&amp; live
,每个都有不同的URL
s。
通常,更改是增量的,但很多时候我们确实希望在每个系统之间来回测试,例如在a / b测试中。
由于路由布局基本相同,因此在基座URL
上来回切换很有意义。
请记住,许多网络应用使用静态资源,例如应用程序框架的html页面,胶合逻辑的javascript和基于Web的后端,它实际上只不过是数据库上的薄层。例如,MEAN应用程序经常这样。
构建应用以这种方式提供了极大的可扩展性和响应速度,因为&#34; web&#34;如模板语言中所发生的那样,服务器不必放慢足够长的时间来构建页面视图。
无论如何设置基础url
意味着能够动态更改应用程序的数据来源,并且由于代码重用,可以极大地提高开发人员的工作效率。
答案 3 :(得分:0)
搜索引擎? 有一段时间,搜索引擎爬行机器人没有“理解”或运行任何Javascript代码。在这种情况下,这样的机器人会使所有链接出错并且爬行将在那里停止。
所以基本上它可能会妨碍一些抓取工具抓取你的链接并将其编入索引。