用程序更改Electron中Web视图的内容
Programmatically Changing the Contents of a Webview in Electron
所以在我的电子应用程序中,我有一个带有侧边栏(包含一些链接)的主页,然后是一个占据大部分页面的网络视图。我在单独的.html文件中有一些页面,我希望能够以编程方式加载到Web视图中。使用iframe,只需设置iframe的name属性(比如"content_frame"),然后将我的链接设置为即可
<a id="page1_link" href="pages/page1.html" target="content_frame">page 1</a>
这是我的网络视图:
<webview nodeintegration="on" src="pages/landing_page.html" name="content_frame" height="100%" width="100%"></webview>
第一个页面(landing_page.html)显示得很好,但如果我尝试以同样的方式使用网络视图,它会在弹出窗口中打开页面,而不是在这个嵌入的网络视图中。到目前为止,我一直在使用iframe,但我需要使用电子中的节点内容(iframe的要求会破坏一切)。
使用锚标记的target属性似乎没有一种干净的方法。使用一些JavaScript,您可以捕获锚点的点击事件,并在网络视图中使用loadURL来更改页面。肯定有更优雅的方法可以做到这一点,但这很有效:
var webview = document.getElementsByName('content_frame')[0];
var bound = false;
webview.addEventListener("dom-ready", function() {
if (bound) return;
bound = true;
var anchors = document.getElementsByTagName("a");
for (var a = 0; a < anchors.length; a++) {
var anchor = anchors[a];
if (anchor.getAttribute('target') == 'content_frame') {
anchor.addEventListener('click', function (e) {
e.preventDefault();
webview.loadURL(e.srcElement.href);
});
}
}
});
但是,您必须根据此处的文档提供协议:http://electron.atom.io/docs/v0.37.4/api/web-view-tag/#webviewloadurlurl-选项:
在Web视图中加载url,url必须包含协议前缀,例如http://或file://。
相关文章:
- 如何在Ionic Android中将Javascript注入到web视图中
- 无法在Windows 10 Cordova应用程序中从Web视图进行ajax调用
- 家谱web应用程序的“家谱”视图
- 如何将Web视图添加到Appgyver中的视图中
- MVC:使用Web窗体视图引擎在javascript中迭代Viewbag数组
- ASP Web 窗体从视图状态中删除类客户端
- Web视图中的远程网站是否可以与Phonegap结合使用
- 将多个事件动态添加到多个 Web 视图
- 在Android Web视图中使用静态文件作为模板
- I'当我试图将java脚本加载到web视图中时,我得到了一个空白屏幕
- JavaFX Webview与Android的兼容性如何'的Web视图
- 是否可以在没有视图状态和回发的情况下使用asp.net web表单
- 用程序更改Electron中Web视图的内容
- 从Web视图上显示的页面部分获取第一个元素
- 在Web视图中触发后退按钮
- 在 Web 视图上自动启动 html5 视频,在 Android 4.2.2 上不起作用
- 从 JavaFX Web 视图调用 Java 方法
- Appgyver 类固醇,Web 视图中更新的对象不会显示
- 当列表视图web部件为空时隐藏它们(SharePoint)
- 将视图Web表单视图引擎格式中的字符串数组转换为javaScript对象