我在MS Access 2010中开发了一个数据库应用程序,它有一个嵌入式WebBrowser控件,用于查看本地网页。该页面使用Google Maps API提供一些独特的地图功能,我使用网络浏览器控件访问网页中的javascript,以便在数据库和呈现它的网页之间传递地图数据。
但是,我一直在遇到“Access is Denied”跨域错误,我无法解决。我记得以前解决了这个问题,它涉及添加“Web of Mark”评论并确保适当的IE兼容模式 - 我已经完成了这两种模式。
HTML文件是本地加载的,它包含一个separte文件夹(也是本地文件夹)中的一系列javascript文件。 javascript文件使用google maps API在Web浏览器控件中填充地图
无论如何,请参阅下面的webbrowser控件直接在MS Access中加载的index.html文件。整体上有很多代码,所以在我更好地了解我应该寻找的内容之前,我不想发送垃圾邮件。
顺便说一下,我在VBA中使用HTMLWindowProxy对象来直接调用网页中嵌入的加载的javascript函数。
具体来说,从VBA内部,我打电话给:
Call proxyWindow.execScript mScriptName
或
Call proxyWindow.Navigate mScriptName
这是产生错误的调用。
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html>
<head>
<meta http-equiv=”X-UA-Compatible” content=”IE=edge”><meta http-equiv=”X-UA-Compatible” content=”IE=edge”>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
.gm-style-iw {
min-width: 150px;
}
</style>
</head>
<body>
<div id="pathData">
<input type="hidden" id="docReadyState" value="unset">
<input type="hidden" id="default_position"
data-lat=41.843435 data-lng=-89.481619>
<input type="hidden" id="location_address" value="">
</div>
<div id="map-canvas"></div>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&libraries=geometry&key=REDACTED"></script>
<script src="js/html.js"></script>
<script src="js/BindableBase.js"></script>
<script src="js/mvcarraybinder.js"></script>
<script src="js/ButtonControl.js"></script>
<script src="js/ElementOptions.js"></script>
<script src="js/SectionMarker.js"></script>
<script src="js/SectionPolyline.js"></script>
<script src="js/SectionMap.js"></script>
<script src="js/main.js"></script>
<script>
document.onreadystatechange = function () {
if (document.readyState === "complete") {
document.getElementById ("docReadyState").value = "ready";}
else {
document.getElementById("docReadyState").value = "busy";}
}
</script>
</body>