我正在开发一个Angular应用程序。我有一个iFrame并设置其包含相对链接的innerHTML,所以我决定在iFrame的头标签中添加base标签,我在脚本/控制器中编写的代码如下:
$scope.content = $scope.selectedSitePage.html.value;
var baseTag = document.createElement('base');
var prependURL = "http://232.17.43.22/sharepoint.xyz.net/";
baseTag.href = prependURL ;
$('#frameContent').contents().find('head').append(baseTag);
在HTML : <iframe id="frameContent" frame-content="content"></iframe>
frameContent是一个指令:
.directive('frameContent', function () {
return { scope: { "content":"=content" },
link: function link(scope, element) {
element.get(0).contentWindow.document.body.innerHTML = scope.content; } }
});
ISSUE:是,如果我有一个相对的URL在img src '/_layout/abc.png',它不会出现,因为请求去'http://232.17.43.22/_layout/abc.png',但它必须是'http://232.17.43.22/sharepoint.xyz.net/_layout/abc.png'
所以我的问题,我怎么能避免切片base href在第一个斜杠之后?
在你的相对路径中丢掉初始的正斜杠就可以了
<img src='_layout/abc.png' alt='an image text' />
阅读更多:在html中开始使用"href"
使用link/href的简单示例效果相同。
如果你悬停链接并检查url地址,你会看到差异。
<html>
<head>
<base href='http://232.17.43.22/sharepoint.xyz.net/' />
</head>
<body>
<a href='_layout/abc.png'>Relative path with no "/"</a><br /><br />
<a href='/_layout/abc.png'>Absolute path with "/"</a>
</body>
</html>