通过HTML代码中的搜索和替换来填写协议相对URL

时间:2016-01-20 10:13:06

标签: javascript html http url replace

我有一个使用协议相关URL的Web应用程序,以尽可能保持动态,问题是在某些情况下这些不起作用,例如作为第三方身份验证的重定向URL,所以问题是有一些我可以指向一个重定向网址,该网址位于HTML data-redirect-url="//abc.com/auth.php"中引用为<button>属性的HTML代码中,并根据活动协议将http / https添加到其中?

顺便提一下,我知道最好只通过HTTPS提供内容,而且人们可能不想再使用这些网址,但我想要保持动态,因为例如使用localhost测试不需要HTTPS。

长话短说。 如果是HTTP

替换 (php-regex)data-redirect-url="//(.+?)"

与 (php-regex)data-redirect-url="http://$1"

如果是HTTPS,

而是使用 (php-regex)data-redirect-url="https://$1"

我对js非常不好(实际上我可以尽量避免使用它),所以尽量保持代码可以理解并且不太复杂。

2 个答案:

答案 0 :(得分:2)

您可以使用location.protocol返回当前网址的协议。 http:https:

根据您的评论,您有一个按钮:

<button class="btn btn-block btn-lg btn-info" data-redirect-url="//somedynamicallygeneratedurl">

要更改data-redirect-url,请使用:

var urlButtons  = document.querySelectorAll('.btn[data-redirect-url]');

for(var _index = 0; _index < urlButtons.length; _index++) {
  var btn = urlButtons[_index];
  btn.setAttribute('data-redirect-url', location.protocol+btn.getAttribute('data-redirect-url'));

  console.log(btn.getAttribute('data-redirect-url'));
}

答案 1 :(得分:2)

我在这个解决方案中使用了一些jQuery,但这可能会有所帮助 它准备好后会改变你的HTML

您唯一需要做的就是将其粘贴到您的页面中

$( document ).ready(function(){
    var el = $('[data-redirect-url]')
    el.each(function(el){
        var i = $(this).attr('data-redirect-url');
        $(this).attr('data-redirect-url', location.protocol+i)
    });
});