簡體   English   中英

包含其他文件中的javascript和html代碼

[英]Include javascript and html code from another file

我有一個包含多個可視化項目的項目,所有項目都使用相同的下拉菜單選擇要加載的csv。 我希望能夠一次添加新選項並在所有文件上進行更改。 最好的方法是在一個文件中使用html和javascript代碼,然后將其包含在其他文件中,因此,如果我想在下拉菜單中添加更多選項,則只能在該文件中執行。 有沒有辦法用html做到這一點,如果可以,我是否必須更改可重復使用的“ A”文件的布局,以便在其余文件中正確使用它? 如果使用html無法實現,那么最好的方法是什么,我必須對文檔的代碼布局進行哪些更改?
這是必須在文件A上的可重用代碼:

<div id="dropdown">
    <select id = "opts">
        <option value = "ds1">Atlas</option>
        <option value = "ds2">BioSQL</option>
        <option value = "ds3">Coppermine</option>
        <option value = "ds4">Ensembl</option>
        <option value = "ds5">Mediawiki</option>
        <option value = "ds6">Opencart</option>
        <option value = "ds7">PhpBB</option>
        <option value = "ds8">Typo3</option>
    </select>
</div>
<script type="text/javascript">
    var ds1="../CSV/atlas/results/metrics.csv";
    var ds2="../CSV/biosql/results/metrics.csv";
    var ds3="../CSV/coppermine/results/metrics.csv";
    var ds4="../CSV/ensembl/results/metrics.csv";
    var ds5="../CSV/mediawiki/results/metrics.csv";
    var ds6="../CSV/opencart/results/metrics.csv";
    var ds7="../CSV/phpbb/results/metrics.csv";
    var ds8="../CSV/typo3/results/metrics.csv";
</script>

我想在樣式B,C,D等文件中的樣式塊之后添加以下內容:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>D3 Test</title>
        <script type="text/javascript" src="../d3/d3.js"></script>
        <script type="text/javascript" src="../d3/d3-tip.js"></script>
        <style type="text/css">
            body{
                font: 16px Calibri;
            }

        </style>
        <!--...HERE IS WHERE I WANT TO INSERT THE CODE FROM THE A FILE-->


    </head>
    <body>
        <script type="text/javascript">

我看到其他帖子也提出了同樣的要求,但是還沒有找到一種方法來做到這一點。 我認為這主要與我同時插入html和javascript代碼有關,但是我對此並不陌生,無法找到正確的方法。 在此先感謝您的幫助。

假設您將稱為文件A的文件存儲在options.html中,那么我的建議如下:

“ script.js”:

// because you put your script in the <head> of B,C,D we wait for the page to load
window.onload = function () {
    // We locate the dropdown menu
    var dropdownMenu = document.getElementById('dropdown');
    // load the file via XHR
    loadHTML(function (response) {
        // the response will be a string so we parse it into a DOM node
        var parser = new DOMParser()
        var doc = parser.parseFromString(response, "text/html");
        dropdownMenu.innerHTML = doc.getElementById('dropdown').innerHTML;

        // in case you want to do something with the references to the .csv files
        var csvFiles = doc.getElementsByTagName('script')[0];
        console.log(csvFiles);

    })
};

function loadHTML(callback) {
    var xobj = new XMLHttpRequest();
    xobj.overrideMimeType("text/html");
    xobj.open('GET', 'options.html', true);
    xobj.onreadystatechange = function () {
        if (xobj.readyState == 4 && xobj.status == "200") {
            callback(xobj.responseText);
        }
    };
    xobj.send(null);
}

請注意,只有將其托管在http服務器上,它才會運行。 換句話說,由於同源政策,它不會在本地運行。

將字符串解析為DOM的靈感來自此答案

通過XHR加載HTML文件的靈感來自於Codepen上的這篇文章

我修改了您的B,C,D版本:

  • 在head-Element中引用script.js

  • 添加了ID為“下拉”的div元素

用php完成,只需像這樣調用它:

<?php include('file.html'); ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM