小编use*_*067的帖子

未捕获(承诺中)错误:侦听器通过返回 true 指示异步响应,但消息通道在响应之前关闭

我在 background.js 中发现“未捕获(承诺中)错误:侦听器通过返回 true 指示异步响应,但消息通道在收到响应之前已关闭”错误。我的 chrome 扩展可以工作,但开发工具在 background.js 上显示很多此类错误

我最近将 chrome 扩展从 Manifest V2 迁移到 Manifest V3,从那时起我发现了错误。

这是错误似乎产生的地方:

const browser = chrome || browser;

// Listen for messages from content script
browser.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
         var frameId = sender.frameId || 0;

            if (request.type == "connect") {               
                connect(sender.tab, frameId);
                sendResponse({ success: true });
            } else if (request.type == "disconnect") {                
                disconnect(sender.tab, frameId);
                sendResponse({ success: true });
            } else if (request.type == "send") {
                sendNativeMessage(request.data, sender.tab);
                document.addEventListener('nativeMessage',
                    function …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension promise chrome-native-messaging chrome-extension-manifest-v3

11
推荐指数
1
解决办法
3万
查看次数

相当于 WebView2 中的 WebBrowser.InvokeScript(String, Object[])

在我的 WPF 应用程序中,我能够使用 WebBrowser 的 InvokeScript(String, Object[]) 方法成功地将消息从 WPF 传递到 JavaScript。我在 Object[] 参数中传递消息,并且 JS 代码很好地接受了它。(见下面的代码)

如何在 WebView2 中实现同样的效果?有什么方法可以像在WebBrowser控件中一样将参数传递给JS代码吗?

窗口.xaml

<Grid>
    <DockPanel> 
        <StackPanel>        
        <TextBox x:Name="txtMessageFromWPF" Width="150" FontSize="20"></TextBox>
        <Button x:Name="btnCallDocument" Click="btnCallDocument_Click" Content="CallDocument" />
        </StackPanel>
        <WebBrowser x:Name="webBrowser" DockPanel.Dock="Top" Margin="30"/>           
    </DockPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

窗口.xaml.cs

private void btnCallDocument_Click(object sender, RoutedEventArgs e)
{
    webBrowser.InvokeScript("WriteMessageFromWPF", new object[] { this.txtMessageFromWPF.Text });
}
Run Code Online (Sandbox Code Playgroud)

JS代码:

<script type="text/javascript">
    function getAlert()
    {
        alert("Hi the page is loaded!!!");
    }
    window.onload = getAlert;
    
    function WriteMessageFromWPF(message){
        document.write("Message from WPF: " + message);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

.net webbrowser-control webview webview2

7
推荐指数
1
解决办法
8841
查看次数

为 WebView2 设置缓存目录

我在 WPF 控件中使用 WebView2 来托管新的边缘。

在我的代码中,我想将 cookie 和浏览器特定数据缓存到缓存目录。创建 CoreWebView2Environment 时,应在 CoreWebView2EnvironmentOptions 中设置缓存位置。

有什么办法可以做到这一点吗?提前致谢。

.net c# chromium webview2

6
推荐指数
3
解决办法
3361
查看次数

如何将光标设置在datagrid中绑定到数据表的空行的第一个单元格上

我有一个绑定到数据表的数据网格.我想知道 - 如何将Cursor显示为在此数据网格的空行的第一个单元格中闪烁,该数据网格绑定到数据表.此外,当用户通过按Enter键将新的空行添加到此数据表/ datagrid时,光标应在新添加的空行的第一个单元格上闪烁.

这是当前显示的UI,但是用户可能不知道在哪里插入值,因为在最后一个空行上没有光标闪烁.

在此输入图像描述

这是代码:

View.xaml

<DataGrid x:Name="MyGrid" ItemsSource="{Binding MyDataTable, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   
                          VerticalAlignment="Top"                           
                          Height="400"
                          Width="Auto"
                          SelectionMode="Single"                        
                          AutoGenerateColumns="True"
                          GridLinesVisibility ="Vertical"
                          Background="Transparent"
                          CanUserResizeColumns="True"
                          CanUserReorderColumns="False"
                          CanUserResizeRows="False"                
                          BorderThickness="0" 
                          CanUserAddRows="True" 
                          RowHeaderWidth="0">                                                  
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

ViewModel.cs

private DataTable _MyDataTable;

public DataTable MyDataTable
{
    get { return _MyDataTable; }
    set { SetProperty(ref _MyDataTable, value); }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf datatable datagrid cursor

5
推荐指数
1
解决办法
269
查看次数

在 React Bootstrap 中设置 Form.Check(复选框)控件的样式

我是反应和引导程序的初学者。我想知道 - 如何设计 Form.Check (复选框)的样式,以便可以用更好的样式覆盖默认的外观和感觉。(比如开关或任何其他外观和感觉)。

这是我尝试过的(我使用了 css 样式,但它没有按预期工作):

MyForm.js

import React from 'react';
import { Row, Form, Col, Button, Container } from 'react-bootstrap';

class MyCustomClass extends React.Component {
  constructor(props) {
    super(props);

    render()
    {
      return (
        <div>
          <br />
          <h3>Page Title</h3>
          <Form>
            <Form.Group >
              <Form.Check
                type="Checkbox"
                label="Click me"              
              />
            </Form.Group>
          </Form>
        </div>
      )
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

MyForm.css

.form-inline {
    width: 100%;
  }

  .form-group {
    width: 90%;
  }

  .input-group {
    width: 90% !important;
  }

  .form-control {
    width: 67% !important;
  }

  //This …
Run Code Online (Sandbox Code Playgroud)

javascript css reactjs react-bootstrap

5
推荐指数
1
解决办法
1万
查看次数

WebView2 控件中的 WebBrowser.ObjectForScripting 和 WebBrowser.Document 的等效项

提前致谢。

在我的应用程序中,我将 WebBrowser 控件替换为 Microsoft 的WebView2

我想知道 WebView2 中 WebBrowser 控件的以下成员的等效项。

  1. WebBrowser.ObjectForScripting
  2. Web浏览器.文档

有人有答案吗?再次感谢。

.net javascript webbrowser-control chromium webview2

5
推荐指数
1
解决办法
3499
查看次数

WebView2 控件中的打印功能

提前致谢 !

在我的应用程序中,我在 WPF 用户控件中嵌入了一个 WebView2 控件。

是否有任何方法或解决方法可以帮助我打印 WebView2 控件?

我发现Microsoft 提供的当前WebView2 预发布SDK 没有任何特定于打印功能的东西。

.net wpf webbrowser-control chromium-embedded webview2

5
推荐指数
1
解决办法
1598
查看次数

通过 WebView2 将对象从 .NET 设置为 JavaScript 代码

提前致谢,

我想为网页中包含的java脚本代码设置一个对象。我正在 WPF 窗口中显示此网页,该窗口引用名称为“webView”的 WebView2。

我对 WebView2 还很陌生,我不太确定如何在 WebView2 SDK 的 AddHostObjectToScript() 方法中传递“名称”和“对象”

这是我尝试过的:

[ComVisible(true)]
public class ObjectHandle
{

  public Products(IPriceService priceDetails,IBillService billDetails)
  {  
     PriceDetails = priceDetails;
     BillDetails = billDetails;
  }

  public IPriceService PriceDetails { get; private set; }

  public IBillService  BillDetails { get; private set; }

}

public class WebViewBrowser:Window
{
   public WebViewBrowser()
   {
     InitializeComponent();
     InitializeAsync();
   }

   private void SetScriptingObject
   {
      ObjectHandle objHandle = new ObjectHandle(priceDetails,billDetails);
               
      webView.corewebview2.AddHostObjectToScript("ObjectHandle",objHandle );                                                                            
   }

   async void InitializeAsync()
   {
      await webView.EnsureCoreWebView2Async(null);
   }
}
Run Code Online (Sandbox Code Playgroud)

.net webbrowser-control webview chromium webview2

5
推荐指数
1
解决办法
7482
查看次数

如何将文件夹中的所有Xml文件加载到XmlDocument

使用下面的代码,我可以在XmlDocument xWorkload中加载一个Xml文件.

XmlDocument xWorkload = new XmlDocument();

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            var outputxml = new StringBuilder(string.Empty);

            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); 
            dlg.FileName = "demo"; // Default file name
            dlg.DefaultExt = ".xml"; // Default file extension
            dlg.Filter = "Xml documents (.xml)|*.xml";  // Filter files by extension


            var result = dlg.ShowDialog();  //Opens the dialog box
            if (result == true)
            {
                xWorkload.Load(dlg.FileName);
                string Path = dlg.FileName.Replace(dlg.SafeFileName, "");
            }
        }
Run Code Online (Sandbox Code Playgroud)

假设,文件夹中有多个Xml文件,我想在xWorkload中加载所有Xml文件,并将这些xml文件存储在一个字符串中我该怎么做?这可以在wpf中使用XmlDocument来完成(不是LINQ).PLZ建议

c# xml wpf xmldocument

4
推荐指数
1
解决办法
8331
查看次数

如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?

如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?

当您右键单击 WebView2 控件时,会出现带有“刷新”、“另存为”等选项的标准上下文菜单。

如何让我自己的 ContextMenuStrip 出现而不是在鼠标右键单击期间出现?

.net webbrowser-control webview webview2

4
推荐指数
2
解决办法
2489
查看次数