我在 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
在我的 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) 我在 WPF 控件中使用 WebView2 来托管新的边缘。
在我的代码中,我想将 cookie 和浏览器特定数据缓存到缓存目录。创建 CoreWebView2Environment 时,应在 CoreWebView2EnvironmentOptions 中设置缓存位置。
有什么办法可以做到这一点吗?提前致谢。
我有一个绑定到数据表的数据网格.我想知道 - 如何将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) 我是反应和引导程序的初学者。我想知道 - 如何设计 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) 提前致谢。
在我的应用程序中,我将 WebBrowser 控件替换为 Microsoft 的WebView2。
我想知道 WebView2 中 WebBrowser 控件的以下成员的等效项。
有人有答案吗?再次感谢。
提前致谢 !
在我的应用程序中,我在 WPF 用户控件中嵌入了一个 WebView2 控件。
是否有任何方法或解决方法可以帮助我打印 WebView2 控件?
我发现Microsoft 提供的当前WebView2 预发布SDK 没有任何特定于打印功能的东西。
提前致谢,
我想为网页中包含的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) 使用下面的代码,我可以在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建议
如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?
当您右键单击 WebView2 控件时,会出现带有“刷新”、“另存为”等选项的标准上下文菜单。
如何让我自己的 ContextMenuStrip 出现而不是在鼠标右键单击期间出现?