2016-11-29 3 views
-4

私たちのページのURLのいくつかはまだhttpであり、サーバー側ではこれを正しく取得できません。 http://から//またはhttps://ですべてのURLを書き換えるためのjavascriptコードがありますか?javascriptによるウェブページ上のURLの変更プロトコル

編集:

T.J.のanwserでテストしてください。 Crowder私はすべての "a href"を置き換えました。私は以下のように画像のURLで異なる多くの場所を持っていたしかし

は:

<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> 

これは今のところトリックです。

サイドノートでは、ページ上に「http://」という場所が1つずつ変更されるため、これは良い方法ではないと思う。テキストに意図がある場合は書き換えることもできる。しかし、それは今のところトリックです。

+0

リンクにはありますか? –

+1

何を試しましたか?それらがリンクにあり、jQueryを使用している場合、これは簡単です。 (リンクに含まれていなくても、それは本当に簡単です。) –

+0

jqueryは時にはhttpを持つURLであるため、ロードされていません。 – user3605780

答えて

2

ご存知のように、ここで正しい修正プログラムは、このようなスキーム相対 URLを作成するには、理想的には完全にスキームを除去することで、これらのリンクサーバー側を修正することです:

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

をしかし、あなたはしましたあなたはそれをすることはできないと言った。だから、

  • あなたは容易にdocument.querySelectorAllを経由して、すべてのaの要素を見つけることができます。
  • 結果を簡単にループすることができます。 (setAttributeまたはhrefプロパティ経由)
  • ...とgetAttribute(またはhrefプロパティを経由して解決URL)
  • を経由して自分のhrefを取得...し、必要に応じて更新します。
  • 同様に、scriptおよびlink rel="stylesheet"

は、ここでのリンクのための簡単な例です:要素は、それが実行されるときのように存在するように

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

はそれが</body>の終わりにscriptタグでありますことを確認してください。

imgために必要に応じて一般化(srcプロパティ)、scriptsrcプロパティ)、link[rel=stylesheet]hrefプロパティ)、...(これらのそれぞれがquerySelectorAllで動作する有効なCSSセレクタである。)

+0

あなたのソリューションは、私にとってはうまくいかないように思われます。私はアンサーを更新しました。 – user3605780

+0

@ user3605780:上記の答えを見て、あなたの質問のコードを見てください。彼らは全く同じではありません。答えでは、個別に修正して修正する必要がある**要素**を見つけています。あなたの質問のコードでは、あなたは 'document.body.innerHTML'で大量置換をしようとしています。 A)それは非常に悪い考えであり、文書を完全に破棄してビルドします。そして、B)それが動作するには 'g'フラグ付きの正規表現が必要です(ただし[A]を参照)。 –

関連する問題