为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 条件替换不起作用

Javascript 条件替换不起作用

ibeautiful 2022-08-18 16:35:31
Javascript条件替换图像src到https,如果url前缀是 http:// 并忽略 https:// 目前我已经将这段代码添加到源部分。Javascript:src="' + p.replace("http","https") + '"问题:http://得到替换,但问题是它也替换它正在破坏src属性和图像返回404错误。如何解决此问题?https://https://httpss://更新:该变量包含图像URL,有时是http,有时是其https。上面的代码成功地将http替换为https,但是当一个url有https时,它会添加另一个这样的s,返回404并且图像无法加载phttpss://
查看完整描述

4 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

只需展开选择,即可替换而不是仅替换 ,即: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之后的任何内容都支持该API。您只需使用构造函数解析字符串,然后修改其属性,即: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());

})

查看完整回答
反对 回复 2022-08-18
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

它工作正常。但是你能定义你的代码,为什么你添加双引号吗?


var p = 'http://google.com';


var src= p.replace("http","https");


console.log(src);


更新


请查看此更新的解决方案。


var p = prompt('Enter URL?');


let str = p.split("://")[0];


var src= str === 'http' ? p.replace("http","https") : p;


console.log(src);

查看完整回答
反对 回复 2022-08-18
?
www说

TA贡献1775条经验 获得超8个赞

它不起作用,因为匹配字符串 是替换字符串 的子集。所以你需要建议不要匹配字符串,或者你可以说只有匹配没有后面的东西。httphttpshttpshttps


const urlVariants = [

  'http://www.google.com',

  'https://www.google.com'

]

urlVariants.forEach(url=> {

  console.log( url, '->', url.replace('http:','https:') )

  console.log( url, '->', url.replace(/http([^s])/,"https$1") )

})


查看完整回答
反对 回复 2022-08-18
?
当年话下

TA贡献1890条经验 获得超9个赞

您应该使用正则表达式进行匹配。检查 url 是否使用 http 的正则表达式是:

  /http[^(?=s)]{0}/i

下面是成功将 http 替换为 https 的工作代码段。

"http://www.google.com".replace(/http[^(?=s)]{0}/i,'https')


查看完整回答
反对 回复 2022-08-18
  • 4 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信