所以我基本上想要实现的是从另一个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">×</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.
知道如何解决这个问题吗?
答案 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
服务器上测试您的网站。这实际上意味着您可以使用HTTP
或HTTPS
来测试您的网站。
在PC上创建localhost
服务器的一些好方法是:
我不熟悉WampServer,所以这里是XAMPP的说明:
C:\xampp
。<xampp installation folder>\htdoc\
Start
Apache
localhost
,然后按 Enter