Cefsharp 执行js和webview2执行js
Cefsharp 执行js
// 引用CefSharp命名空间
using CefSharp;
using CefSharp.WinForms;
// 声明CefSharp浏览器变量
private ChromiumWebBrowser browser;
public Form1()
{
InitializeComponent();
// 设置CefSharp浏览器的初始页面
browser = new ChromiumWebBrowser("https://tongyi.aliyun.com/");
this.panel1.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
//Cef
}
String html = browser.GetSourceAsync().Result;
string cookies = @"
var cookies = document.cookie;
cookies;
";
var result = this.browser.EvaluateScriptAsync(cookies).Result.Result;
string headers2 = @"
function getHeadersUsingXMLHttpRequest(url) {
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, true);
return new Promise(function(resolve, reject) {
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) { // 请求完成
if (xhr.status == 200) { // 请求成功
var headers = xhr.getAllResponseHeaders();
resolve(headers); // 返回响应头
} else {
reject('Request failed with status: ' + xhr.status);
}
}
};
xhr.send();
});
}
// 使用 await 确保 Promise 返回已完成的结果
const headersget = await getHeadersUsingXMLHttpRequest(window.location.href);
headersget; // 返回获取到的响应头
";
var resultheader2 = this.browser.EvaluateScriptAsync(headers2).Result.Result;
string headers3 = @"
function getHeadersUsingXMLHttpRequest(url) {
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, true);
return new Promise(function(resolve, reject) {
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) { // 请求完成
if (xhr.status == 200) { // 请求成功
var headers = xhr.getAllResponseHeaders();
resolve(headers); // 返回响应头
} else {
reject('Request failed with status: ' + xhr.status);
}
}
};
xhr.send();
});
}
// 这里不使用 `await`,而是通过 `.then()` 来处理 Promise 结果
getHeadersUsingXMLHttpRequest(window.location.href).then(function(headers) {
return headers; // 直接返回结果
}).catch(function(error) {
return 'Error: ' + error; // 返回错误信息
});
";
var resultheader3 = this.browser.EvaluateScriptAsync(headers3).Result.Result;
webview2执行js
string cookies = @"
var cookies = document.cookie;
cookies;
";
var cookie = await webView.ExecuteScriptAsync(cookies);
string headers2 = @"
function getHeadersUsingXMLHttpRequest(url) {
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, true);
return new Promise(function(resolve, reject) {
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) { // 请求完成
if (xhr.status == 200) { // 请求成功
var headers = xhr.getAllResponseHeaders();
resolve(headers); // 返回响应头
} else {
reject('Request failed with status: ' + xhr.status);
}
}
};
xhr.send();
});
}
// 使用 await 确保 Promise 返回已完成的结果
const headersget = await getHeadersUsingXMLHttpRequest(window.location.href);
headersget; // 返回获取到的响应头
";
var header2 = await webView.ExecuteScriptAsync(headers2);
// 2. 执行 JavaScript 脚本,使用 postMessage 将响应头传递回 C# 端
string headers23 = @"
function getHeadersUsingXMLHttpRequest(url) {
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, true);
return new Promise(function(resolve, reject) {
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) { // 请求完成
if (xhr.status == 200) { // 请求成功
var headers = xhr.getAllResponseHeaders();
resolve(headers); // 返回响应头
} else {
reject('Request failed with status: ' + xhr.status);
}
}
};
xhr.send();
});
}
// 这里不使用 `await`,而是通过 `.then()` 来处理 Promise 结果
getHeadersUsingXMLHttpRequest(window.location.href).then(function(headers) {
return headers; // 直接返回结果
}).catch(function(error) {
return 'Error: ' + error; // 返回错误信息
});
";
var result23 = await webView.ExecuteScriptAsync(headers23);
var result = await webView.ExecuteScriptAsync(headers2);
Cefsharp 安装的时候要根据谷歌的版本进行选择