我正在托管一个 Web 浏览器控件,使用 IWebBrowser2.put_Silent(VARIANT_TRUE)
进行初始化。
但是,当使用格式错误的路径调用 IWebBrowser2.Navigate
时,我仍然会收到一个消息框,相当于
"file:///D://htmlstuff/page.html" was not found. Make sure the path or internet address is correct.
此处的问题是用户意外指定的双斜杠(D:\htmlstuff 而不是 D:\htmlstuff)。
我可以在执行导航之前更早地发现这个特定问题,但我担心这个消息框仍然出现,因为我无法验证每个可能的 URL(或其他可能导致 webbrowser 控件忽略 Silent 标志的原因) .
我希望得到一个静默返回的错误代码。
有什么想法吗?是否有“更安静”的选项?
Windows 8.0、IE 10.0.9200.16750
最佳答案
这是 WebBrowser 控件的不良行为,我在使用 VBA 和 UserForms 时遇到过这种情况。 我的解决方法是将目标 URL 加载到小型托管页面内的 iframe 中。这 方式不会弹出警报,您可以查询目标 URL 是否确实加载。
用<PathTo>/framehost.html#<TargetURL>
调用托管页面
<!DOCTYPE html>
<head>
<title>Frame Host</title>
<script>
window.onload = function() {
var frame = document.getElementById('MyFrame');
frame.src = location.hash.substring(1);
frame.onload = function() {
try {
var doc = frame.contentDocument;
alert("Loaded " + frame.src);
} catch(e) {
alert("Failed to load " + frame.src)
}
}
}
</script>
</head>
<body>
<iframe id="MyFrame" src="about:blank"></iframe>
</body>
</html>
关于c++ - WebBrowser 控件 : Navigate shows error message box even though . Silent 为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22200768/