Mik*_*hey 5 ms-access vba google-maps
我以前看过类似的帖子,但我在网上看到的所有解决方案似乎都不适合我。
我正在尝试使用 WebBrowser 控件来显示使用 Google Maps JavaScript API 的本地保存的 HTML 文件,但 JavaScript 仍然顽固地禁用。
为了测试这个问题,我使用基于https://developers.google.com/maps/documentation/javascript/examples/map-simple 的谷歌地图制作了一个简单的页面。我还添加了一个按钮来直接测试 JavaScript 是否正常运行
c:\map-test.html 在 Firefox 和 IE 中都能完美运行。
<!DOCTYPE html>
<html>
<head>
<title>Google Maps JavaScript API v3 Example: Map Simple</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map_canvas {
margin: 0;
padding: 0;
height: 100%;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<input type="button" onclick="alert('JavaScript Functioning');" value="Test JavaScript">
<div id="map_canvas"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个带有名为 cWebBrowser 的 WebBrowser 控件的 MS Access 表单,并添加了一个方法来加载 c:\map-test.html。谷歌地图界面无法加载,测试按钮已死。
Private Sub Form_Current()
Me.cWebBrowser.ControlSource = "=(""file:///C:/map-test.html"")"
End Sub
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试了map-simple的在线版本。JavaScript 按预期工作并加载了 Google Map 界面
Private Sub Form_Current()
Me.cWebBrowser.ControlSource = "=(""https://google-developers.appspot.com/maps/documentation/javascript/examples/map-simple"")"
End Sub
Run Code Online (Sandbox Code Playgroud)
我一直试图解决这个问题很长一段时间没有成功。
在这篇文章http://support.microsoft.com/?kbid=315933 之后,我在 IE 安全设置中启用了我的电脑区域
在所有区域中,我启用了以下功能:
在高级选项卡下,我启用了以下内容:
有人建议在我的页面中添加 Web 标记,但这也无济于事。
我试过清除缓存。
我尝试更改文件名,以防清除后缓存仍然存在。
map-test.html 在 IE 和 WebBrowser Control 中下载时都可以工作,但只能在本地使用 IE 工作。除了安全设置之外,还有什么可能导致问题?是否有我遗漏的安全设置?是否还有其他测试可以诊断问题?
我在我的智慧尽头。
环境:
Windows 7 64bit
Access 2010
IE 9
聚苯乙烯
问题继续变得更奇怪
今天,我尝试创建一个非常简单的 JavaScript 页面,以确保它不是导致问题的 Google 地图代码。
<!DOCTYPE html>
<html>
<body>
<input type="button" onclick="alert('JavaScript Functioning');" value="Test JavaScript">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
起初它奏效了,我很高兴。接下来,我尝试了谷歌地图测试页面,它也奏效了!所以,我尝试了我的全功能地图(在 IE 和 Firefox 中工作),它从我的数据库应用程序加载 JSON 输出,但它全部着火了,谷歌地图代码在内部导致了许多错误(不幸的是,我没有记录这些错误) .
现在,我回到了第一广场;所有页面都不允许编写脚本,包括上面的 5 行?!?!
首先,查看增强保护模式和本地文件以及了解本地计算机区域锁定。
我已经使用完全相同的环境测试了不同的配置,并且它们都有效(请参阅下面的注意事项)。
创建一个新表单,然后向其中添加一个网页浏览器控件:
将其设置ControlSource为 URL 有效:

下载 HTML 并将其保存到我的桌面,然后在ControlSource作品中引用本地文件:

ControlSource添加了一个按钮并在其OnClick事件中设置网络浏览器的 工作原理:
Private Sub Command1_Click()
WebBrowser0.ControlSource = "=""C:\Users\Renaud\Desktop\map-simple.htm"""
End Sub
Run Code Online (Sandbox Code Playgroud)

从我上面提到的有关本地网页安全的文章的链接中,我尝试了一些操作:
如果文件保存在用户的临时文件夹中,它将正确加载。
尝试一下,输入%TEMP%资源管理器,它应该会带您进入C:\Users\username\AppData\Local\Temp或类似的内容。
将 html 文件保存在那里并尝试从 Access 加载它,例如使用上面表单上的按钮:
Private Sub Command1_Click()
WebBrowser0.ControlSource = "=""C:\Users\Renaud\AppData\Local\Temp\map-simple.htm"""
End Sub
Run Code Online (Sandbox Code Playgroud)或者,为了让 IE 允许您打开该文件,您需要降低其完整性级别,以便在 IE 打开该文件时强制该文件在 Internet 区域中运行(从而使其正常工作)。您可以通过打开命令提示符(以管理员身份)来检查文件的当前设置:

现在,我们可以设置文件完整性并再次检查设置:

现在您应该能够从 Access 和 IE 打开该文件。
请注意,虽然当您将文件从 NTFS 系统移动到另一个 NTFS 系统时,ACL 会随文件一起移动,但如果您将它们复制到 USB 闪存驱动器或其他格式化为 FAT 的系统,它们可能会丢失,因此可能需要重新删除它们。 - 如果它们丢失,则应用于目标计算机。
正如 Remou 提到的,我尝试将Web 标记添加到文件本身,但它对我不起作用,文件无法加载。
这是我尝试过的:
<!doctype html>
<!-- saved from url=(0014)about:internet -->
<html>
<head>
<title>Google Maps JavaScript API v3 Example: Map Simple</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
....
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7539 次 |
| 最近记录: |