如何防止在我的引导模式中加载的 html 影响我的页面 html?

Posted

技术标签:

【中文标题】如何防止在我的引导模式中加载的 html 影响我的页面 html?【英文标题】:How can I prevent the html loaded within my bootstrap modal from affecting my page html? 【发布时间】:2016-12-18 20:39:36 【问题描述】:

我正在将完整的 html 电子邮件(带有打开和关闭 html 标签)加载到我的模式中以进行预览。像这样:

//Update modal body
$('.modal-body').html(response['html']);

我遇到的问题是,当我这样做时,加载的 html 似乎(不出所料)改变了模式之外的主页内容。

我想知道是否有一种方法可以将 html 隔离到模式区域,这样它就不会影响主页的 html。

我已经考虑使用 iframe 作为替代方案,但对我来说,问题是我正在通过 ajax(以及其他数据)加载这些数据,而 iframe 似乎只支持通过链接提取信息苍蝇。

我会很感激这里的任何潜在解决方案。

谢谢!

【问题讨论】:

可能重复:***.com/questions/16504816/… 和/或***.com/questions/8226307/… 这些解决方案对我来说不起作用。 iframe 似乎没有加载必要的 html。 【参考方案1】:

塔帕:

您可以尝试以下代码,而不是 Jquery:

<div> 
    <object type="text/html" data="http://www.google.com/"   style="overflow:auto;border:5px ridge blue">
    </object>
 </div>

希望这会有所帮助!

【讨论】:

【参考方案2】:

由于存在任何沙盒,这些可能无法在此处运行,但在本地对我有用。

var target = document.getElementById('target');
var targetDoc = target.contentWindow.document;

targetDoc.open('text/htmlreplace');
targetDoc.write("<html><body>Hello world</body></html>");
targetDoc.close();
&lt;iframe id="target"&gt;&lt;/iframe&gt;

同样如此:

var target = document.getElementById('target');
target.src = "javascript:'<html><body>Hello world</body></html>'";
&lt;iframe id="target"&gt;&lt;/iframe&gt;

虽然我认识到第二个示例可能难以明智地管理报价。

这是一个完整的工作引导示例。好吧,它在本地工作,但同样,不在这个沙箱中。

var target = document.getElementById('target');
var targetDoc = target.contentWindow.document;

targetDoc.open('text/htmlreplace');
targetDoc.write("<html><body>Hello world</body></html>");
targetDoc.close();
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">


<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">


        <iframe id="target"></iframe>


      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>

虽然它在沙箱中失败了,但它在本地渲染是这样的......

【讨论】:

问题就在这里(我刚刚测试过),当加载数据 html 时,主 html 仍在更改。 此时你的模态体应该只是静态的 iframe 对吧?您不再更新模态正文,而是在正文中设置静态 iframe。

以上是关于如何防止在我的引导模式中加载的 html 影响我的页面 html?的主要内容,如果未能解决你的问题,请参考以下文章

如果存在验证错误,防止引导模式关闭

获取在 JavaScript 中加载的图像的宽度

如何将opencv Mat矩阵保存到可以在Matlab中加载的文件中

如何防止从 dopostback 关闭引导模式?

Vuejs 中的动态导入

Spring:在Junit中加载的类中自动装配不同的类