js正则修改html中src的内容,正则替换html中的src路径为全路径
时间: 2024-01-21 13:19:20 浏览: 29
可以使用JavaScript的正则表达式和字符串操作来实现将相对路径替换为绝对路径的功能。
假设你有一个HTML文件,其中包含了一些图片或其他资源,它们的路径是相对于HTML文件的。你想把这些路径替换为绝对路径,可以使用如下的代码:
```javascript
let html = '<html><body><img src="./images/cat.jpg" /></body></html>';
// 获取当前页面的URL
let baseURL = window.location.href;
// 替换src属性的值
html = html.replace(/src="([^"]*)"/g, function(match, src) {
// 将相对路径转换为绝对路径
let absoluteURL = new URL(src, baseURL).href;
return 'src="' + absoluteURL + '"';
});
console.log(html);
```
在上面的代码中,我们首先获取了当前页面的URL,然后使用正则表达式匹配HTML中所有的`src`属性,并通过回调函数将其替换为绝对路径。在回调函数中,我们使用`URL`对象将相对路径转换为绝对路径。
注意,如果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 内容时,可以将相对路径转换为绝对路径,从而避免图片等资源文件路径出错的问题。
我想替换的是 <image src="xxxx" />的地址
如果你想替换的是 `<img>` 标签中的 `src` 属性,那么你需要修改 JavaScript 代码中的正则表达式,以匹配 `<img>` 标签的 `src` 属性。下面是修改后的示例代码:
```java
public class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String javascript = "javascript:(function() {"
+ "var imgs = document.getElementsByTagName('img');"
+ "for (var i = 0; i < imgs.length; i++) {"
+ "var img = imgs[i];"
+ "var url = img.getAttribute('src');"
+ "if (url.startsWith('http')) {"
+ "var xhr = new XMLHttpRequest();"
+ "xhr.open('GET', url, true);"
+ "xhr.responseType = 'arraybuffer';"
+ "xhr.onload = function() {"
+ "if (xhr.status === 200) {"
+ "var uInt8Array = new Uint8Array(xhr.response);"
+ "var i = uInt8Array.length;"
+ "var binaryString = new Array(i);"
+ "while (i--) {"
+ "binaryString[i] = String.fromCharCode(uInt8Array[i]);"
+ "}"
+ "var data = binaryString.join('');"
+ "var base64 = window.btoa(data);"
+ "img.setAttribute('src', 'data:image/png;base64,' + base64);"
+ "}"
+ "};"
+ "xhr.send();"
+ "}"
+ "}"
+ "})()";
view.loadUrl(javascript);
}
}
```
这段代码中,我们使用 `img.getAttribute('src')` 来获取 `<img>` 标签的 `src` 属性,然后将其替换为 Base64 编码字符串。同样,你需要将图片的本地路径替换为对应的路径。