微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在新选项卡中将字符串作为 HTML 内容打开?

如何解决如何在新选项卡中将字符串作为 HTML 内容打开?

    namespace MyApp.viewmodels
    {
        class Controlviewmodel : DependencyObject,INotifyPropertyChanged
        {
            public WindowUIBaseviewmodel() {}
            public event PropertyChangedEventHandler PropertyChanged;
            void OnPropertyChanged(string name) => PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(name));
            public static readonly DependencyProperty MyAttachedProperty = DependencyProperty.Registerattached("MyAttached",typeof(Control),typeof(Controlviewmodel),new FrameworkPropertyMetadata(null,FrameworkPropertyMetadataOptions.AffectsRender));
            public static void SetMyAttached(UIElement element,Control value) => element.SetValue(MyAttachedProperty,value);
            public static Control GetMyAttached(UIElement element) => (Control)element.GetValue(MyAttachedProperty);
        }
    }

我正在尝试将 blob 文件(在本例中它是一个字符串)作为 HTML 内容打开到一个新选项卡中。这个函数工作正常,但它打开一个纯文本内容标签只是写成“public openNewTab(blob: Blob | string) { const data = 'data:text/plain;charset=utf-8,' + encodeURIComponent(blob); window.open(data,'_blank'); setTimeout(() => window.URL.revokeObjectURL(data),100); } ”作为文本。我想显示 HTML 内容。我试图将数据定义为 text/html 但它不起作用。如何在不使用任何库的情况下做到这一点? 我也尝试使用这样的锚标记

<html><head><title>....

它与 window.open() 的结果相同。

解决方法

您可以使用窗口文档的写入功能实现,如下所示:

public openNewTab(blob: Blob | string) {
   const data = 'data:text/plain;charset=utf-8,' + encodeURIComponent(blob);
   var myWindow = window.open("",'_blank');
   myWindow.document.write(data);
   setTimeout(() => window.URL.revokeObjectURL(data),100);
}

您可以在 https://www.w3schools.com/jsref/met_win_open.asp 找到更多详细信息。

,

您告诉浏览器内容是 text/plain - 这就是它仅作为文本处理的原因。将其更改为 text/html,它应该可以工作。

作为替代,您可以使用 window.document.write() 设置打开窗口的内容。

document.querySelector("#someButton").onclick = function() {
  let child = window.open("about:blank","myChild");
  child.document.write(`<html>
    <head><title>Hi mum!</title></head>
    <body><p>Hello World</p></body>
   </html>`);
  child.document.close();
}

Working fiddle

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?