当前位置: 首页 > 知识库问答 >
问题:

如何在Electron中的单个窗口中呈现多个HTML文件?

孔和畅
2023-03-14

我一直在玩Electron,在试用了几个模板、应用程序和Electron网站上的应用程序之后,我对如何在一个框架和浏览器窗口中呈现几个HTML文件感到有些困惑。

通过研究该主题,我了解到我将使用BrowserWindow从应用程序创建一个新窗口。在ready上,但我想弄清楚如何构建一个侧导航,将内容加载到div,例如:

.navbar-global {
  background-color: grey;
}
.navbar-global .navbar-brand {
  color: white;
}
.navbar-global .navbar-user > li > a {
  color: white;
}
.navbar-primary {
  background-color: #333;
  bottom: 0px;
  left: 0px;
  position: absolute;
  top: 51px;
  width: 200px;
  z-index: 8;
  overflow: hidden;
  -webkit-transition: all 0.1s ease-in-out;
  -moz-transition: all 0.1s ease-in-out;
  transition: all 0.1s ease-in-out;
}
.navbar-primary.collapsed {
  width: 60px;
}
.navbar-primary.collapsed .glyphicon {
  font-size: 22px;
}
.navbar-primary.collapsed .nav-label {
  display: none;
}
.btn-expand-collapse {
    position: absolute;
    display: block;
    left: 0px;
    bottom:0;
    width: 100%;
    padding: 8px 0;
    border-top:solid 1px #666;
    color: grey;
    font-size: 20px;
    text-align: center;
}
.btn-expand-collapse:hover,
.btn-expand-collapse:focus {
    background-color: #222;
    color: white;
}
.btn-expand-collapse:active {
    background-color: #111;
}
.navbar-primary-menu,
.navbar-primary-menu li {
  margin:0; padding:0;
  list-style: none;
}
.navbar-primary-menu li a {
  display: block;
  padding: 10px 18px;
  text-align: left;
  border-bottom:solid 1px #444;
  color: #ccc;
}
.navbar-primary-menu li a:hover {
  background-color: #000;
  text-decoration: none;
  color: white;
}
.navbar-primary-menu li a .glyphicon {
  margin-right: 6px;
}
.navbar-primary-menu li a:hover .glyphicon {
  color: orchid;
}
.main-content {
  margin-top: 60px;
  margin-left: 200px;
  padding: 20px;
}
.collapsed + .main-content {
  margin-left: 60px;
}
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<nav class="navbar navbar-inverse navbar-global navbar-fixed-top">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Dash</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav navbar-user navbar-right">
            <li><a href="#"><span class="glyphicon glyphicon-user"></span> User</a></li>
            <li><a href="#about"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
<nav class="navbar-primary">
  <ul class="navbar-primary-menu">
    <li>
      <a href="dashboard.html"><span class="glyphicon glyphicon-list-alt"></span><span class="nav-label">Dashboard</span></a>
      <a href="profile.html"><span class="glyphicon glyphicon-envelope"></span><span class="nav-label">Profile</span></a>
      <a href="settings.html"><span class="glyphicon glyphicon-cog"></span><span class="nav-label">Settings</span></a>
      <a href="notification.html"><span class="glyphicon glyphicon-film"></span><span class="nav-label">Notification</span></a>
      <a href="monitor.html"><span class="glyphicon glyphicon-calendar"></span><span class="nav-label">Monitor</span></a>
    </li>
  </ul>
</nav>
<div class="main-content">
<h1>I am the main content</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Autem sint assumenda quae aliquid voluptatibus quia, ea, ad natus magni repellat earum, culpa iure tempore. Enim dolor eaque minima voluptas ducimus?</p>
</div>

在侧导航中会有命名的HTML文件,例如:

dashboard.html
profile.html
settings.html
notification.html
monitor.html

使用onclick如何将这些内容加载到

当我研究答案时,我看到了

>

const win=新浏览器窗口(选项)赢。loadUrl(文件://${\uuu dirname}/index.html

在electron-loadsfs中加载本地html文件的简单方法。readFile这似乎是一种过度的方法

在电子中,超文本标记语言文件应该如何加载在一个单一的框架中,这个过程会适用于任何正在加载的文件吗?


共有1个答案

华乐逸
2023-03-14

如果要将本地超文本标记语言文件加载到现有的超文本标记语言页面中,有两个选项:

你说这太过分了,但我认为这是“ajax”请求的本地对应项。

<!DOCTYPE html>
<html>
<body>
    <button id="my-button">Click me</button>
    <div id="my-div">First content</div>
</body>
<script type="text/javascript">
    var fs = require('fs');

    document.getElementById('my-button').addEventListener('click', function() {
        fs.readFile('external_content.html', function (err, data) {
            document.getElementById('my-div').innerHTML = data.toString()
        })
    })
</script>
</html>

另一个选择是使用iframe,它允许在没有javascript的情况下更改网站的一部分。

<!DOCTYPE html>
<html>
<body>
    <a href="external_content.html" target="my-iframe">Click me</a>

    <iframe name="my-iframe" src="first_content.html"></iframe>
</body>
</html>
 类似资料:
  • 问题内容: 我想通过在“处理”中仅使用一个草图来创建两个窗口。 我想做的是,如果我在一个窗口中单击一个按钮,则某些图像会出现在另一个窗口中。 我搜索了Google并找到了一些示例。实际上,我在此“堆栈溢出网络”中发现了相同的问题。这里是链接。 在处理中 http://forum.processing.org/one/topic/multiple- windows-2-4-2011.html中 创建

  • 我正在集成一个非react第三方库,它在我的react应用程序中呈现自己的HTML。如何渲染我自己的react组件后加载到该HTML的DOM中。我尝试使用ReactDom.Render,它确实有效,但不在根上下文中。反复调用ReactDom.Render似乎也会导致性能问题。

  • 我想通过在处理中使用一个草图来创建两个窗口。 我想做的是,如果我在一个窗口中单击一个按钮,那么一些图像就会出现在另一个窗口中。 我搜索了谷歌,找到了一些例子。实际上,我在这个“堆栈溢出网络”中发现了相同的问题。以下是链接。 在处理中为单个草图创建多个窗口http://forum.processing.org/one/topic/multiple-windows-2-4-2011.html 这是第二

  • 我正试图从SQL Server导出一些数据作为HTML文件,但Internet explore将这些文件呈现得非常好,尽管chrome显示特殊字符。

  • 问题内容: 我想做的是从Java应用程序多次运行文件。因此,我设置了一个运行以下代码的时间: 问题是,现在每次运行命令时,都会弹出一个新的cmd窗口。但是,我想要的只是开始时弹出的 一个 窗口,该窗口用于显示以下命令调用中的所有数据。 我怎样才能做到这一点? 问题答案: 使用 & &,您可以执行多个命令,一个接一个地执行: 使用多个命令和条件处理符号 您可以使用条件处理符号从单个命令行或脚本运行多

  • 问题内容: 如何在“处理”中创建单个草图的多个窗口? 实际上我想在一个窗口中检测并跟踪特定颜色(通过网络摄像头),然后将检测到的坐标显示为另一个窗口中的点,直到现在我仍可以在检测到该颜色的同一个窗口中显示这些点。我想将其拆分为两个不同的窗口。 问题答案: 您需要创建一个新框架和一个新的PApplet …这是一个示例草图: