在CEFSharp(cSharp)中使用java脚本执行HTML文件



我有一个HTML文档,其中包含显示谷歌地图的javascript。这个html文件在单独执行时可以完美地工作。

我需要在C#Chromium浏览器中执行它,但我意识到我的网页返回空白,因为javascript没有执行。

这是HTML文件:

<html>
<head>
<script type="text/javascript"> 
function initMap() {
let map; 
var address = encodeURIComponent("8G5QVGFV+P9");
var req = new XMLHttpRequest();
req.open("GET","https://plus.codes/api?address=CCQCW%2B2F Gafsa&key=<myKEY>",false);
req.send(null);
var json_rep = JSON.parse(req.responseText);
const chicago = { lat: json_rep.plus_code.geometry.location.lat , lng: json_rep.plus_code.geometry.location.lng };

class CenterControl {
map_;
center_;
constructor(controlDiv, map, center) {
this.map_ = map;
goCenterUI.addEventListener("click", () => {
const currentCenter = this.center_;
this.map_.setCenter(currentCenter);
});
setCenterUI.addEventListener("click", () => {
const newCenter = this.map_.getCenter();
if (newCenter) {
this.center_ = newCenter;
}
});
}
}
map = new google.maps.Map(document.getElementById("map"), {
zoom: 12,
center: chicago,
});
map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv);
}
</script>
</head>

<body>
<div id="map" style="width: 100%; min-height: 100vh;"></div>
<script
src="https://maps.googleapis.com/maps/api/js?key=<myKEY>&callback=initMap&v=weekly"
defer
></script>
</body>

我试着在没有脚本的情况下加载一个html文件,我使用的方法很简单,也不起作用,因为html正在ChromiumBrowser上执行和shoen,但我的JavaScript不起作用所以它返回黑色。

public void mapTest() {
var html = File.ReadAllText(@"C:UsersAdministratorDesktopnewMaptheMap.html");
chromeBrowser.LoadHtml(html);
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Left;
}

我也看了一眼,但我没能让它发挥作用:

1( cefsharp执行javascript

2(https://github.com/cefsharp/CefSharp/wiki/General-Usage#when-can-i-start-executing-javascript

谢谢。

您正在使用的LoadHtml方法创建一个只适用于基本html的数据uri。

LoadHtml有多个重载,请改用LoadHtml(IWebBrowser,String,String(。(提供要显示的页面的url(。

请参阅https://github.com/cefsharp/CefSharp/wiki/General-Usage#loading-来自磁盘数据库的htmlcssjavascriptetc嵌入资源流

最新更新