2017-10-16 6 views
0

小さなJavaScriptコードでHTMLテンプレートを作成しようとしています。ここのものは...ルートで、私は2つのファイルが構築されています:私は、インデックスをロードする際
index.htmlを
HTMLの絶対パスが機能していない

<!DOCTYPE html> 
<html lang="fr"> 
<head> 
    <title>HTML Template</title> 
    <!-- Header initialized with /header-footer.js --> 

</head> 
<body> 

    <footer> 
    <!-- Footer initialized with /header-footer.js --> 
    <script type="text/javascript" src="/headerfooter.js"></script> 
    </footer> 
</body> 
</html> 

headerfooter.js

(function() { 

    /*************** HEADER *****************/ 
    const headerBeforeAppend = document.querySelector('head') 

    document.querySelector('head').innerHTML = ` 
     ${headerBeforeAppend.innerHTML} 

     <meta charset="UTF-8"> 
     <meta content="width=device-width,initial-scale=1" name="viewport"> 

     <!-- CSS --> 
     <!-- Google fonts --> 
     <link href="https://fonts.googleapis.com/css?family=Montserrat:100,400,700" rel="stylesheet"> 
     <!-- Bootstrap, Materialize, etc... you see the idea --> 

     <!-- Javascript --> 
     <!-- Fontawesome --> 
     <script src="https://use.fontawesome.com/45d80bbe59.js"></script> 
     <!-- jQuery, Bootstrap scripts, etc... you see the idea --> 
    ` 

    /*************** FOOTER *****************/ 

    const footerBeforeAppend = document.querySelector('footer') 

    document.querySelector('footer').innerHTML = ` 
     ${footerBeforeAppend.innerHTML} 

     <!-- JQuery (for Bootstrap) --> 
     <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> 
     <!-- Bootstrap CDN v4 alpha--> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script> 
    ` 

    })() 

をアイデアは、あります。 htmlのブラウザで、headerfooter.jsスクリプトに<head>セクションと<footer>セクションに<links><script>が必要です。

スクリプトの場合、私が書いたコードはスクリプトへの相対パスです:<script type="text/javascript" src="headerfooter.js"></script>しかし、それはルートへの絶対パスでは動作しません:<script type="text/javascript" src="/headerfooter.js"></script>。 これは問題です。これをテンプレートにして、毎回パスを書き換えなくても、Webフォルダに作成するすべてのHTMLページにこのスクリプトを含めることができます。私はどこかで間違いを犯しましたか?

(PS:そのようなテンプレートを作成するのは悪い習慣ですか?)

+0

あなたのページに関連するスクリプトはどこですか?それはいつも同じでしょうか?そうでなければ 'http:// www.example.com/example.js'のような'絶対パス 'を使うべきです - '/headerfooter.js'は相対パスです... – brso05

+0

ファイルは実際に絶対パスでホストされていますか?パス? '/ headerfooter.js'を参照すると、javascriptコードが得られますか? – theGleep

答えて

1

あなたのページをどのように実行するかは重要です。

file://プロトコルで実行する場合は、(index.htmlを開くだけで)絶対パスが正しく解決されません。どういうわけかローカルサーバーを実行したいと思うでしょう(これを行う方法は数多くありますが、使用しているものによっては、この質問の範囲が大きすぎます)。

ローカルサーバ(つまりhttp://localhost)を使用している場合は、http://localhost/headerfooter.jsで直接ファイルを開いてみてください。それがうまくいかない場合、あなたのファイルはあなたが思っている場所ではありません。

+0

完璧!ありがとう! – arnaudambro

関連する問題