通过javascript更改网页上网址的协议

时间:2016-11-29 17:05:36

标签: javascript jquery html

页面上的一些网址仍然是http,我们无法在服务器端获得正确的信息。是否有一些javascript代码用http:// to //或https://?

重写所有网址

编辑:

通过T.J.的anwser进行测试克劳德我得到了所有的" a href"被替换。

然而,我有很多不同的地方有图片网址:

    <header class="category_header init_bg_mobile" data-bg="//test.jpg" data-bg-md="http://test2.jpg" data-bg-xs-2x="http://test.jpg" >

所以我混合了他的anwser和This anwser。

     <script>

       (function(){
      Array.prototype.forEach.call(

         document.body.innerHTML = document.body.innerHTML.replace('http://',       '//');

     )();

     </script>

这就是现在的诀窍。

旁注,我不认为这是一种很好的做法,因为它改变了每一个地方&#34; http://&#34;在页面上,如果在文本中有意图,也可以重写它。然而它现在就成功了。

1 个答案:

答案 0 :(得分:2)

如您所知,正确的解决方法是修复服务器端的这些链接,理想情况是完全删除该方案,以创建 scheme-relative 这样的URL:

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

但是你说你不能这样做。

所以:

  • 您可以通过a轻松找到所有document.querySelectorAll元素。
  • 您可以轻松遍历结果。
  • ...并通过href获取getAttribute(或通过href属性解析后的网址)
  • ...如有必要(通过setAttributehref属性)进行更新。
  • 同样,scriptlink rel="stylesheet"

以下是链接的简单示例:

Array.prototype.forEach.call(
    document.querySelectorAll("a[href]"),
    function(link) {
        if (link.href.startsWith("http://")) {
            link.href = "https://" + link.href.substring(7);
        }
    }
);

确保在script末尾的</body>标记中,以便元素在运行时存在。

根据需要对imgsrc属性),scriptsrc属性),link[rel=stylesheet]href属性进行概括),...(每个都是一个有效的CSS选择器,可与querySelectorAll一起使用。)