gpt4 book ai didi

javascript - 使用 Silverlight 以编程方式打开新的浏览器选项卡并设置内容

转载 作者:行者123 更新时间:2023-11-28 09:32:14 25 4
gpt4 key购买 nike

想知道 Silverlight 中是否有任何方法可以打开新的浏览器选项卡并设置其内容。简而言之,我的应用程序接收文件(二进制数据)并需要让用户的浏览器显示它们。

我的应用程序从云存储库下载内容(图像/pdf/其他内容),并将它们作为二进制数据存储在本地缓存中;然后,我需要一种方法来在新选项卡中向最终用户显示现在的本地内容。 “新选项卡”要求是由于 silverlight 不支持许多文件类型的渲染,例如 .gif、.pdf 等 - 浏览器可以轻松处理的内容,无论是 native 还是通过广泛使用的插件。所以我当前的 WTF-y 解决方案使用 System.Windows.Browser 并包含以下内容:

        // Get document and body
var doc = HtmlPage.Document;
var body = doc.Body;

// Create a <form> element and add it to the body
var newForm = doc.CreateElement("form");
newForm.SetAttribute("action", "www.example.com/contentpresenter.php");
newForm.SetAttribute("enctype", "multipart/form-data");
newForm.SetAttribute("method", "POST");
newForm.SetAttribute("target", "_blank");
body.AppendChild(newForm);


var inp = doc.CreateElement("input");
inp.SetAttribute("type", "text");
inp.SetAttribute("name", "mcontent");
inp.SetAttribute("value", Tools.ToBase64( content.Content as Stream ));
newForm.AppendChild(inp);

var inpt = doc.CreateElement("input");
inpt.SetAttribute("type", "text");
inpt.SetAttribute("name", "tcontent");
inpt.SetAttribute("value", content.ContentType);
newForm.AppendChild(inpt);

// Send away!
newForm.Invoke("submit");

简而言之,它创建一个 javascript 脚本,将内容发布到远程 PHP 脚本,而该脚本除了解码和呈现内容之外什么也不做,内容将在新选项卡中打开。是的,我完全知道这听起来有多么愚蠢——但是它确实有效并且按预期工作。

据我所知,由于安全限制,创建一个新的 HtmlWindow 并构建/更改其内容不是一个选项。一个明显的选择是让 Silverlight 生成 javascript,这将创建一个新选项卡来加载提供的内容,但 javascript 在处理二进制或 base64 数据方面并不太大 - 至少不能无缝地跨浏览器 - 而且整个事情看起来很愚蠢。

是否有解决方案可以仅通过 Silverlight 实现此目的,或者至少使用最少的 JavaScript 来实现此目的?或者,是否有您推荐的任何 JavaScript 库来处理 Base64 数据?

最诚挚的问候!

最佳答案

我建议您找到 Telerik 的 silverlight 组件源并使用 RadHtmlPlaceholder(略有问题)。+ 您可以启用受信任的应用程序在 SL 5 的浏览器内运行并使用 WebBrowser 控件(最佳质量),但仅适用于 Windows。

关于javascript - 使用 Silverlight 以编程方式打开新的浏览器选项卡并设置内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com