类似于如何使用<iframe>
,<embed>
,<object>
等将外部视频,插件等嵌入网站,是否可以将应用程序直接嵌入Blazor?大概.NET应用程序会更容易。
类似
<div>
<application path="/dist/file/myApplication.exe"></application>
</div>
看看Web Assembly的功能,我可以确定一般概念是可以实现的。我只是想知道Blazor中是否有一种轻松做到这一点的方法。
我最初的问题措辞也许过于简单。我并不一定意味着<application path="myApplication.exe"></application>
确实可以解决问题。我真正在考虑的是一种通过WASM将非Javascript应用程序嵌入网站的用户友好方法的概念。我之所以提到Blazor,是因为它似乎是当前提供最佳方法的最佳竞争者。
以下是启发该问题的原因:https://webassembly.org/demo/Tanks/
我认为,由于已成功将Unity游戏移植到浏览器上的Web组件中运行,因此可能在任何应用程序中执行类似的操作(在合理的情况下)。
也许不是现在,但是在不远的将来。
答案 0 :(得分:1)
在Linux或iOS上运行exe文件时会遇到问题。
在Windows上,这将是一个很大的,无法接受的安全风险。我们去过那里,是用ActiveX完成的。没有人想重复一遍。
我不确定您是指哪种“ Web Assembly功能”,但目前它需要JS才能在屏幕上显示任何内容。
因此:不,这不可能,而且永远不会。
答案 1 :(得分:0)
如果您拥有“托管在网络上”的内容,则可以使用以下代码将其“嵌入” Blazor应用程序内部:
node.js
<script type="text/javascript">
// From: https://gomakethings.com/getting-html-asynchronously-from-another-page/
var getHTML = function (url, callback) {
// Feature detection
if (!window.XMLHttpRequest) return;
// Create new request
var xhr = new XMLHttpRequest();
// Setup callback
xhr.onload = function () {
if (callback && typeof (callback) === 'function') {
callback(this.responseXML);
}
};
// Get the HTML
xhr.open('GET', url);
xhr.responseType = 'document';
xhr.send();
};
</script>
<script type="text/javascript">
var populateDiv = function (element) {
getHTML('https://blazor.net/', function (response) {
element.innerHTML = response.documentElement.innerHTML;
});
};
</script>
ElementRef modalBody; // reference to the DIV
protected override void OnAfterRender()
{
// This will set the content of the Div
// to the content of the server Login page
setDivContent(modalBody);
}
public Task setDivContent(ElementRef elementRef)
{
return JSRuntime.InvokeAsync<object>("populateDiv", elementRef);
}