ueditor 使用setContent 会改变原来html里的img的路径
时间: 2024-03-12 08:50:27 浏览: 109
是的,使用 `setContent` 方法设置 HTML 内容时,如果 HTML 内容中包含图片等资源文件,且这些资源文件的路径是相对路径,那么这些相对路径会相对于当前页面的 URL 进行解析,而不是相对于原来 HTML 内容所在的 URL 进行解析,导致图片等资源文件的路径出错。
解决这个问题的方法是,在使用 `setContent` 方法设置 HTML 内容之前,将 HTML 内容中的相对路径转换为绝对路径,可以使用以下代码:
```javascript
var absoluteUrl = new URL(relativeUrl, window.location.href).href;
```
其中,`relativeUrl` 是相对路径,`window.location.href` 是当前页面的 URL,`absoluteUrl` 是转换后的绝对路径。可以使用该方法将 HTML 内容中的所有相对路径转换为绝对路径,然后再使用 `setContent` 方法设置 HTML 内容,这样就可以避免路径出错的问题了。
相关问题
Ueditor中如何使用setContent() 不改变html里的图片路径
在使用 `setContent` 方法设置 HTML 内容时,Ueditor 提供了一个 `filterTxt` 方法,可以过滤掉 HTML 内容中的一些不需要的属性或元素,从而保留图片等资源文件的相对路径。
使用 `filterTxt` 方法的具体步骤如下:
1. 获取需要设置的 HTML 内容。
```javascript
var content = "<p>这是一段包含图片的 HTML 内容</p><img src='img/pic.jpg'>";
```
2. 在设置 HTML 内容之前,调用 `filterTxt` 方法对 HTML 内容进行过滤。
```javascript
content = editor.getOpt('filterTxt')(content);
```
3. 使用 `setContent` 方法设置过滤后的 HTML 内容。
```javascript
editor.setContent(content);
```
4. 在保存 HTML 内容时,如果需要将相对路径转换为绝对路径,可以使用 `getContent` 方法获取 HTML 内容,然后使用正则表达式替换相对路径。
```javascript
var content = editor.getContent();
content = content.replace(/src=['"]([^'"]+)['"]/g, function(match, p1) {
var absoluteUrl = new URL(p1, window.location.href).href;
return 'src="' + absoluteUrl + '"';
});
```
这样做的效果是过滤掉 HTML 内容中的一些不需要的属性或元素,并保留图片等资源文件的相对路径。在保存 HTML 内容时,可以将相对路径转换为绝对路径,从而避免图片等资源文件路径出错的问题。
ueditor setContent
`UEditor` 提供了一个 `setContent` 方法,用于设置编辑器的初始内容。该方法接受一个参数,可以是一个字符串或一个 DOM 对象,表示要设置的内容。例如:
```javascript
var editor = new UE.ui.Editor();
editor.render("editor");
editor.setContent("<p>Hello World!</p>");
```
以上代码创建了一个 `UEditor` 实例,并设置了初始内容为一个段落元素。
如果要设置内容为一个 DOM 对象,可以使用 `innerHTML` 属性获取该对象的 HTML 代码,然后传入 `setContent` 方法。例如:
```javascript
var div = document.createElement("div");
div.innerHTML = "<p>Hello World!</p>";
editor.setContent(div.innerHTML);
```
以上代码创建了一个 `div` 元素,将其内容设置为一个段落元素,并将其 HTML 代码传入 `setContent` 方法。
注意,`setContent` 方法必须在编辑器实例渲染完成之后调用,否则会出现异常。可以将 `setContent` 方法放在 `render` 方法之后,或者在 `render` 方法的回调函数中调用。例如:
```javascript
var editor = new UE.ui.Editor();
editor.render("editor", function(){
editor.setContent("<p>Hello World!</p>");
});
```
以上代码在 `editor` 元素上渲染编辑器实例,并在渲染完成后设置初始内容。
阅读全文