javascript - Javascript条件替换不起作用
问题描述
如果 url 前缀位于 http:// 并忽略 https://,则 Javascript 有条件地将图像 src 替换为 https:// 目前我已将这段代码添加到源代码部分。
Javascript:
src="' + p.replace("http","https") + '"
问题:
http://
被替换,https://
但问题是它也被替换https://
为httpss://
破坏 src 属性并且图像返回 404 错误。如何解决这个问题?
更新:
该变量p
包含图像 URL,有时是 http,有时是 https。上面的代码成功地将 http 替换为 https 但是当一个 url 有 https 时,它会添加另一个像这样httpss://
返回 404 并且图像无法加载的 s
解决方案
只需扩展选择,以便您替换http://
而不是http
,即:
p.replace("http://", "https://")
请参见下面的示例:
const urls = [
'https://example.com',
'http://example.com'
];
urls.forEach(url => {
console.log(`Original URL: ${url}`);
// Incorrect behavior
console.log(url.replace('http', 'https'));
// Correct behavior
console.log(url.replace('http://', 'https://'));
});
解决这个问题的另一种方法是利用URL API,IE11 之后的任何东西都支持它。您只需使用new URL()
构造函数解析字符串,然后修改其protocol
属性,即:
const urls = [
'https://example.com',
'http://example.com'
];
urls.forEach(url => {
console.log(`Original URL: ${url}`);
const modifiedUrl = new URL(url);
modifiedUrl.protocol = 'https';
console.log(modifiedUrl.toString());
});
推荐阅读
- mysql - Laravel SQL 查询。帮我
- python - 如何在谷歌 colab 中显示 catboost 图?
- java - 在数组中使用多线程
- javascript - 分享到社交网络生成的内容给客户端(使用 React)
- ios - 不受信任的企业开发人员(没有可信任的个人资料可见)
- terminal - Emacs 未填写终端帧缓冲区
- ubuntu - 焦油:eosPT_data:无法使用时间:功能未实现
- javascript - React / TypeScript:读取更改的选择框
- python - 无法将文件从 CSV 转换为 Excel
- kotlin - 如何从 kotlin 中的 mi band 4 获取心率?