我有一个从HTA
启动的遗留应用程序。我从file://
开始,然后立即将用户重定向到网址location.href="http://server/path"
。
有没有办法检测导航是否成功(或检测
思路: 注意: URL将是一个托管在应用服务器上的动态页面(servlet)。静态内容(图像等)以不同方式托管。通过验证图像,它不能保证真实的URL工作。请有答案反映这种差异。 (谢谢!)
XHR
在网址导航到网址之前获取HTTP响应代码。 (因为网站不相同的许可问题:file:// - > http://)SCRIPT
元素到url的已知路径。FRAME
中的网址。然后从结果页面或HTA
成功重新加载父项。
答案 0 :(得分:0)
从服务器加载图片并收听onload
和onerror
个事件。图像可以只是一个像素的透明gif。
<img src="http://server/transparent.gif" onload="setServerAvailable(true);" onerror="setServerAvailable(false);" />
修改:您可以在iframe中加载页面。您可以通过JavaScript监控页面运行状况。使用HTA时,您无需担心同源策略。将此代码保存为HTA,然后加载HTA并单击按钮。您将看到您可以修改框架内容,即使它位于另一个域中:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Test Same Origin Policy in HTA</title>
<script type="text/javascript">
function modifyFrame()
{
var fr = document.body.getElementsByTagName("iframe")[0];
fr.contentWindow.document.body.innerHTML =
"Cross domain scripting works in HTA";
}
</script>
</head>
<body>
<iframe src = "http://stackoverflow.com/questions/7940913/"></iframe>
<br /><br />
<button onclick="modifyFrame()">Modify cross-domain frame content</button>
</body>
</html>
答案 1 :(得分:0)
如果您有权访问目标网页,请在网页上放置一个ping(onload
)给调用者服务器注册成功加载。
根据您选择的技术,来自网页的ping可以是对服务器上的Web服务的简单调用,该服务在中央存储库(即数据库)中注册成功加载。您的HTA可以定期检查数据库的加载状态并采取相应的行动。
总之,您需要的是:
答案 2 :(得分:0)
CALLING
页面无法直接知道其导航是成功还是失败。可以使用不同的方法来增加它发生的可能性,但最终它可能成功也可能不成功。