从另一个HTML文件获取引导模式内容

时间:2017-05-24 08:39:35

标签: html twitter-bootstrap

所以我基本上想要实现的是从另一个html文件获取引导模式的内容,而不是将模态内容放在索引html文件上(因为我需要多次使用它)。

我尝试过高低搜索答案,而我最接近的就是:Getting Bootstrap's modal content from another page

但是,我有一个问题,因为它没有显示任何模态内容。它只显示一个空白模态,我不知道我哪里出错了。

以下是我的相关代码: 主要HTML:

<div class="panel panel-default">
    <div class="panel-heading">
        <i class="fa fa-bar-chart-o fa-fw"></i> Pre-IDA Test
    </div>

    <div class="panel-body">
        <div id="chartdiv" style="width: 100%; height: 400px;"></div>
        <script> pretest() </script>
        <a href="pretestmodal.html" class="btn btn-info" data-toggle="modal" data-target="#testing">View Data</a>
        <div id="testing" class="modal fade" role="dialog" tabindex="-1" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                </div>
            </div>
        </div>
    </div>
</div>

模态内容:

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body>

    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Details</h4>
    </div>
    <!-- /.modal-header -->
    <div class="modal-body">
        <div class="table-responsive">
            <table class="table table-bordered table-hover table-striped">
                <thead>
                    <tr>
                        <th>Year/Quarter</th>
                        <th>Indoor Quarterly Results</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>2016 Q1</td>
                        <td>Q1 (59/60)</td>                
                    </tr>
                    <tr>
                        <td>2016 Q2</td>
                        <td>Q2 (58/60)</td>     
                    </tr>
                </tbody>
            </table>
        </div>
        <!-- /.table-responsive -->
    </div>
    <!-- /.modal-body -->
    <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    </div>
    <!-- /.modal-footer -->
    </body>
</html>

修改 查看JavaScript控制台后,我发现了一个错误:

jquery.min.js:4 XMLHttpRequest cannot load file:///E:/PORTAL/pages/pretestmodal.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用w3-include。只需将模态放在要包含的文件中

<!DOCTYPE html>
<html>
<script src="https://www.w3schools.com/lib/w3.js"></script>

<body>

<div w3-include-html="modal.html"></div> 

<script>
w3.includeHTML();
</script>

</body>
</html>

答案 1 :(得分:0)

您遇到的问题是在使用Google Chrome中的file:///协议查看网站文件时非常常见的问题。

如果您查看日志中收到的错误消息:

  

仅支持协议方案的交叉原始请求:http,数据,chrome,chrome-extension,https。

作为一点见解,当您尝试从另一个域访问资源(例如Javascript文件或CSS文件)时,会出现a cross origin request。当您将网站视为本地文件(即使用Chrome的file:///协议)时,您可以访问的文件类型是有限的。这称为same-origin policy。这些策略用于防止诸如影响计算机的跨站点脚本(XSS)攻击等攻击。

file:/// URI的同源策略的Mozilla Developer Network has an interesting article,可以很好地解释您的问题:

  

例如,如果您有一个文件foo.html访问另一个文件bar.html并且您已从文件index.html导航到该文件,则仅当bar.html位于同一目录中时,加载才会成功index.html或与index.html在同一目录中包含的目录

将此应用于您遇到的错误,可能是您尝试访问的文件位于导致跨源请求错误的其他目录中。

值得注意的是,所有这些问题都在发生,因为您正在本地文件系统上测试您的网站。要解决此问题,您应该尝试在localhost服务器上测试您的网站。这实际上意味着您可以使用HTTPHTTPS来测试您的网站。

在PC上创建localhost服务器的一些好方法是:

  • XAMPP - 适用于Windows,Mac和Linux的良好解决方案
  • WampServer - 仅针对Windows的另一种解决方案。

我不熟悉WampServer,所以这里是XAMPP的说明:

  • 访问XAMPP网站并下载相应的安装程序。这将提示您选择安装位置。在Windows上,通常为C:\xampp
  • 将所有网络文件放在<xampp installation folder>\htdoc\
  • 文件夹中
  • 打开XAMPP控制面板,然后点击Start
  • 下的Apache
  • 在您的网络浏览器中,输入localhost,然后按 Enter
  • 您现在应该可以在没有您所描述的问题的情况下查看您的网站。