function makeLinks(context, url) {
var sets = context ? $(context + ' a') : $('a'),
prot = url || window.location.protocol;
if(prot.match(/https/)){
lockup(sets);
}
function lockup(elem) {
elem.each(function(){
var self = $(this),
href = self.attr('href');
if(href.match(/http[^s]/)){
// This logs the correct output
console.log(href.replace('http','https'));
// This fails
href.replace('http','https');
}
});
}
}
该函数的目的是检查窗口对象的当前协议。
如果是“https:”,那么我希望具有“http”href 的锚点是“https”。
函数调用如下: makeLinks('#wrapper', 'https:');
第二个参数仅用于测试,否则将使用 window.location.protocol
目前,当我在如下标记上调用此函数时:
<a href="http://cross-origin-denial.com"></a>
<a href="http://pleasesecureme.com"></a>
<a href="https://imcool.com"></a>
<div id="wrapper">
<a href="http://cross-origin-denial.com"></a>
<a href="http://imscrewed.com"></a>
<a href="http://yougotmetoo.com"></a>
<a href="https://imcool.com"></a>
</div>
控制台准确地记录了我想要发生的事情,但是,DOM 内部的实际 href 保持不变。
我已经在 Chrome 和 Firefox 中对此进行了测试,结果相同
我很确定我的逻辑在某处(或任何地方)是错误
的